第3章 リストと配列 リストと配列
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
第2章の冒頭で説明したように、スカラーがPerlにおける「単数形」だとすれば、Perlにおける「複数形」はリストや配列で表現される。
リストは、スカラーの順序付けられたコレクションである。配列はリストを含む変数である。人々はこの2つの用語を同じ意味で使いがちだが、大きな違いがある。リストはデータで、配列はそのデータをストアする変数だ。配列にないリスト値を持つことはできるが、配列変数には必ずリストが格納されている(リストは空かもしれないが)。図3-1は、配列に格納されているかどうかにかかわらず、リストを表している。
リストと配列はスカラー値や変数と同じように多くの演算子を共有しているので、並列に扱うことにする。しかし、それぞれの違いを忘れてはいけない。

図3-1. 5つの要素を持つリスト
配列やリストの各要素は個別のスカラー値である。これらの要素は順番に並んでいる-つまり、最初の要素から最後の要素まで特定のシーケンスを持っている。配列やリストの要素は、0から始まり1ずつカウントされる整数でインデックス付けされるため、配列やリストの最初の要素は常に0である。これはまた、最後のインデックスがリストの項目数より1少ないことを意味する。
各要素は独立したスカラー値であるため、リストや配列は数値、文字列、undef 、あるいは異なるスカラー値の混合を保持することができる。とはいえ、本のタイトルのリスト(すべて文字列)や余弦のリスト(すべて数値)のように、すべての要素が同じ型であることはよくある。
配列とリストは任意の要素数を持つことができる。最小のものは要素を持たないが、最大のものは利用可能なメモリをすべて埋めることができる。繰り返しになるが、これは "不必要な制限は設けない "というPerlの哲学に沿ったものだ。
配列の要素にアクセスする
他の言語で配列を使ったことがある人なら、Perlが数値インデックスで要素を参照するために、配列に添え字を付ける方法を提供していることに驚くことはないだろう。
配列の要素には、このように、0から始まり各要素ごとに1ずつ増える、連続した整数を用いて番号が付けられる:
$fred[0] = "yabba"; $fred[1] = "dabba"; $fred[2] = "doo";
配列名そのもの(この場合、fred )は、スカラーが使う名前付けとはまったく別の名前付けである。同じプログラミングの中で、$fred という名前のスカラー変数があっても、Perlはそれらを別のものとして扱うので混乱することはない。(ただし、メンテナンスのプログラマは混乱するかもしれないので、気まぐれにすべての変数名を同じにしてはいけない!)
$fred[2] のような配列要素は、他のスカラー変数が使える(ほとんど)あらゆる場所で使うことができる。例えば、第2章で使ったのと同じような式で、配列要素から値を取得したり、値を変更したりすることができる:
print $fred[0]; $fred[2] = "diddley"; $fred[1] .= "whatsis";
添え字は、数値を与える式であれば何でもよい。整数でない場合、Perlは自動的に整数部分を切り捨てる(丸めない!): ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access