配列は、文字列や数値など複数の値を1つの変数にまとめて管理できるオブジェクトです。配列オブジェクトと繰り返し処理などを組み合わせることで、より簡潔なプログラムを記述することができます。
配列の初期化
配列を新しく定義する最も簡単なのは、配列式(配列リテラル)[ ]を使う方法です。
以下のように、括弧[]で囲んだ中に文字列や数値などのオブジェクトをカンマ(,)で区切りで記述します。なお、一般的に配列内のオブジェクトは要素と呼ばれます。
1 |
[要素1, 要素2, ...] |
names変数に、複数の要素(この場合、名字)を持つ配列を代入します。
1 |
names = ["田中", "佐藤", "高橋"] |
配列の要素の取り出しとインデックス
配列の要素を取り出すには、インデックスを指定して取り出す方法と繰り返し処理を使って1つずつ取り出す方法の2つが主に使われます。
インデックスを指定する
配列内の要素には、先頭から順に番号が割り振られます。番号は0から始まり、「0」「1」「2」...と1ずつ増えていきます。この番号のことを配列のインデックスと呼びます。
指定したインデックスの要素を取り出すのは、以下のような書式になります。
1 |
配列名[インデックス] |
先ほど定義した配列の一番最初の要素「田中」を取り出して表示するには、以下のように記述します。
1 2 3 |
names = ["田中", "佐藤", "高橋"] puts names[0] #=> 田中 |
なお、インデックスには負の値を指定することも可能で、負の値の場合は一番最後の要素からカウントされます。例えば、「-3」ならば最後から3番目の要素となります。
繰り返し処理をする
配列の要素は、繰り返し処理を行うメソッドを使うことで取り出すこともできます。Rubyにはさまざまな繰り返し処理のメソッドが用意されていますが、今回はeachメソッドを使います。
変数citiesの要素を1つずつ取り出し、表示する例です。
1 2 3 4 |
cities = ["Tokyo", "Nagoya", "Osaka"] cities.each do |x| puts x end |
これを実行すると「Tokyo Nagoya Osaka」と表示されます。
Arrayクラス
今まで配列式を用いて配列について説明してきましたが、Rubyにおける配列はすべてArrayクラスのインスタントとなります。Arrayクラスとは、配列を表すオブジェクトを提供するクラスです。
そのため、以下のようにArrayクラスを使って配列を定義することもできます。
1 |
names = Array["田中", "佐藤", "高橋"] |
[]はArrayクラスの特異メソッドとして定義されているものです。つまり、 Array[]は、Arrayクラスの[]メソッドを呼び出しているということになります。
ただし、配列は基本的には配列式を使って定義されるので、配列はArrayクラスのインスタントという点だけ覚えておけば良いでしょう。
まとめ
- 配列は、[要素1,要素2,要素3]のように定義する
- 配列の要素は、インデックスを指定するか繰り返し処理で取り出す
- すべての配列は、Arrayクラスのインスタント