Part6:リスト

海未「では今回は、リストについて見てみましょう」
希「言葉だけは何回か出てきとるやつやね」

海未「リストというのは、ここまでに出てきたようなデータに順序を付けて並べたものです」

凜「リリース順にゃ」
海未「入れられるものは、かなり自由な仕様になっているようです」

海未「いろいろと混ぜることもできます」
希「てことは、リストにリストも入るん?」
海未「はい。ですから、多次元リストも書けますね」

凜「中身がほしいときはどうするにゃ?」
海未「はい、いくつかやり方があるのですが・・・」

海未「hdはリストの先頭要素を返します。headですね。tlは先頭を除いた残りのリストを返します。tailだと思います」
凜「んー、なんかちょっとめんどくさそうだにゃ」
海未「ElixirのリストはいわゆるLinked Listですから、先頭から順番にアクセスしていくのが基本なのです。ランダムアクセスが必要ならタプルの方が向いていますね」
凜「そっか、いきなり何番目、っていうのはできないんだね」
海未「ただ、先頭からたどる処理を毎回書くのは大変ですから、Enum.atという関数で狙い撃ちはできます」
希「さすが海未ちゃん、あなたのハートも狙い撃ち、ってね」
海未「え、あ・・・の、希!」
凜「劇場の投げキッスの回数を見てると狙い撃ちというより散弾にゃ」
希「よく見ててみ、AAで投げキッスからカメラがパンアップして下りてきたところにおるのは穂乃果ちゃんやで」
凜「おーっ、つまり海未ちゃんが狙い撃ちしてるのは・・・」
海未「いい加減にしてください!!」


海未「こほん。では2人とも反省したようなので続けます」
希「悪かったわ・・・」
凜「ごめんなさいにゃ・・・」

海未「リストの足し算と引き算です。演算子++--を使います」
凜「引き算の時はうまく差分だけ残るんだね」

海未「リストの長さはlengthで取れます」

海未「便利な関数もいくつか覚えておきましょう」

海未「Enum.sumはリスト内の数値の和を求める関数です。integerでもfloatでも計算できますが、それ以外のデータがあるとエラーになるので注意してください」
凜「数学の宿題が捗るにゃ」
海未「Enum.reverseはリストを逆順に並べ替える関数です。List.lastはリストの最後の要素を返します」
希「hdの逆みたいな感じやね」
海未「List.flattenですが、これは多次元のリストを1次元に展開するものです」
希「何に使うん?」
海未「そうですね・・・多次元リストの中身を全部処理したいときに、フラットにしてしまって頭から順に処理していく方が楽、とかでしょうか」

海未「最後に、文字列のところで出てきた、シングルクォートを使った文字列をみてみましょうか」
希「そやった、あれもリストやったね」

海未「このように、シングルクォートの文字列は内部では整数のリストになっています」
希「文字コードが並んでるわけやね」
海未「はい。それと、リストなので先ほど取り上げたような操作が行えます」

凜「これはこれで便利・・・なのかどうかよくわからないにゃ」
海未「文字列は基本的にダブルクォートでよいと思いますよ」

希「次回の当番はウチやね。リストと似てるけどちょっと違う、タプルについてや」


LINEで送る
Pocket


返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です