Rubyの配列の書き方
配列(Array)を使うことで、複数のデータをまとめて扱うことができます。
今回はRubyでの配列の基本的な使い方と、どのようなときに使われるのかについて、具体的なソースコードをともに解説していきます。
Rubyの配列の基礎
まずは、Rubyの配列の基礎です。
配列を使うための準備である初期化の方法と配列からデータを取り出す方法を解説します。
配列の初期化
まずは配列を作ってみましょう。配列を生成するとこを配列の初期化といいます。
Rubyの配列は以下のように変数に[]で囲んだ複数の要素を記述することで初期化します。
リスト名 = [要素1, 要素2, 要素3...]
例えば、複数の生徒の名前をもつ配列を作る場合は以下のようなコードになります。
students = ["Taro", "Bob", "Mika"]
また、次のように宣言することでデータの入っていない空の配列を作ることもできます。
array = []
配列の要素の取り出し
配列の中のデータのことを要素と呼びます。次は配列から要素を取り出す方法を解説します。
要素にはインデックスと呼ばれる番号が1つ目の要素から順に0,1,2...と割り振られており、
リスト名[インデックス]
と記述することで、指定したインデックス番号の要素を取得できます。
先ほど作成した配列studentsから、「Mika」を取得したい場合は
students[2]
となります。インデックスが0から始まることに気を付けてください。
Rubyの配列の基本操作
ここからは、配列に対して要素の追加、削除などの操作をする方法を解説していきます。
要素の追加
まずは配列の最後に要素を追加する方法です。3通りの方法を紹介します。
#使用していないインデックスを指定して代入
array = ["a", "b", "c"]
array[3] = “d”
#["a", "b", "c", "d"]
#pushメソッドを使用
array.push("e")
#["a", "b", "c", "d", "e"]
#<<メソッドを使用
array << "f"
#["a", "b", "c", "d", "e", "f"]
要素の挿入
次は配列の任意の場所に要素を挿入する方法です。
insertメソッドを使います。
第一引数で挿入するインデックス、第二引数で挿入する要素を指定します。
array = ["a", "b", "c"]
array.insert(1, "zz" )
#["a", "zz", "b", "c"]
要素の更新
次は要素を書き換える更新の方法です。
更新したいインデックスを指定して新たな要素を代入します。
array = ["a", "b", "c"]
array[0] = "XX"
#["XX", "b", "c"]
要素の削除
配列から要素を削除する方法です。
deleteメソッドを使用します。引数に削除したい要素を指定します。
array = ["a", "b", "c", "d"]
array.delete("c")
#["a", "b", "d"]
配列の結合
配列同士を結合させる方法もあります。
concatメソッドを使うことで、引数で指定した配列を末尾に結合することができます。
array_1 = ["a", "b", "c", "d"]
array_2 = [1, 2, 3]
array_1.concat(array_2)
#["a", "b", "c", "d", 1, 2, 3]
Rubyの配列に用意されている代表的なメソッド
Rubyには、上記で紹介してきたメソッド以外にも配列を操作するためにいくつものメソッドが用意されています。
今回はその中でも使われることの多いメソッドを紹介します。
Rubyリファレンスからすべてのメソッドをみることができるので、ぜひチェックしてみてください。
eachメソッド:配列の要素数だけブロックを繰り返し実行
eachメソッドを使うことで配列の要素の数と同じ回数指定した処理を繰り返すことができます。
これを利用することで、配列の要素を順番に表示するなどの処理が可能です。
eachメソッドは以下のような作りになっています。
配列名.each do |ブロックパラメータ|
繰り返したい処理
end
これだけではわかりづらいので、配列studentsのすべての要素を順番に表示するというコードを例に説明します。
【使用例】
students = ["Taro", "Bob", "Mika"]
students.each do |name|
print name + ","
end
【実行結果】
Taro,Bob,Mika,
ブロックパラメータには任意の名前をつけます。
今回は「name」としています。このブロックパラメータに配列の要素が順番に入っていくと考えてください。
1周目は「Taro」が「name」に入り出力される、2周目は「Bob」が「name」に入り出力される、という処理を配列の要素数分繰り返します。
lengthメソッド:配列の要素数を調べる
lengthメソッドを使うと配列の要素数を調べることができます。
【使用例】
students = ["Taro", "Bob", "Mika"]
print students.length
【実行結果】
3
empty?メソッド:配列が空かを調べる
配列が空かどうかを判定するのに使えるのがempty?メソッドです。
空ならtrue、空でないならfalseを返します。
【使用例】
students = ["Taro", "Bob", "Mika"]
print students.empty?
【実行結果】
false
Rubyの連想配列(Hash)について
配列と似たような使い方をするものに、連想配列(Hash)というものがあります。配列との違いですが、配列のインデックスはゼロ「0」から始まる数値が振られます。
連想配列の場合はインデックスに「任意の文字列(キー(key))」を指定して値を代入することが可能です。
連想配列は以下のように書きます。
連想配列名 = {キー名 => 値1, キー名 => 値2, キー名 => 値3}
どういうことなのか、例を使ってみてみましょう。
連想配列を作成し、要素を取得してみます。
【使用例】
menu = {"うどん" => "300円", "ラーメン" => "500円", "パスタ" => "800円"}
print menu["うどん"]
【実行結果】
300円
このように、連想配列ではインデックスが番号ではなく指定したキーとなっています。要素を取得する際も、キーを指定することでセットになっている値(バリュー)を取得します。
連想配列はキーとバリューを関連付けたいときに非常に有用です。
まとめ
今回はRubyでの配列の使い方と連想配列について解説してきました。
配列と連想配列はどちらもさまざまな場面で使われるので、Rubyでプログラミングをする際には必須の知識といえるでしょう。
この記事で配列の基礎を理解した後は、ぜひ連想配列についても勉強してください。
TECH PLAYでは、エンジニアの方向けに勉強会・イベント情報を提供しています。
ご興味のある方はぜひご参加ください。