RubyのArray
クラスやHash
クラスはそれぞれ配列やハッシュを扱うためのクラスです。
Array
クラス、Hash
クラスにはそれぞれ配列やハッシュを操作するのに便利なメソッドが用意されています。
この記事ではRubyにおける配列やハッシュの基本からArray
クラス、Hash
クラスの便利なメソッドを紹介していきたいと思います。
配列やハッシュの定義
それではまず配列やハッシュの定義の仕方をそれぞれ見ていきましょう。
配列とは
配列とは複数のデータを1つの集まりとして扱うための箱のようなものです。
配列は[]
と,
を使って、定義します。
arr = ["apple", "orange", "lemon"]
[]
で1つの集まりを表し、,
で1つ1つの要素を区切って定義します。
また、Rubyでは配列の中に違うデータ型の要素を1つにまとめることができます。
arr = [1, "太郎", 20]
ハッシュとは
ハッシュとは連想配列とも呼ばれ、配列と同様に複数のデータを1つの集まりとして扱うためのものですが、要素をキーとバリューで指定して定義します。
キーとバリューを定義することで、各要素に意味を持たせることができます。
hash = { id: 1, name: "太郎", age: 20 }
キーにname
で、その値に"太郎"
を定義することで、名前が太郎というデータだという意味を持つようになります。
ここが配列との大きな違いの1つですね。
また、ハッシュは下記のように定義することもできます。
hash = { "id" => 1, "name" => "太郎", "age" => 20 }
配列やハッシュの基本的な操作
次に配列やハッシュの基本的な操作を見てみましょう。
配列の操作
下記のように定義した配列に対して、取得や追加などの操作を行なっていきましょう。
arr = ["apple", "orange", "lemon"]
要素の取得
まずは配列の要素を取得してみましょう。
配列の要素を取得するには、配列名[インデックス番号]
とすることで、指定の要素を取得することができます。
インデックス番号とは、添字とも呼ばれ、配列の何番目の要素かを表しています。
Rubyでは、配列の1番始めの要素のインデックス番号は0
と決まっています。
val = arr[0]
p val
=> "apple"
要素の変更
配列の要素の値を変更するには、配列名[インデックス番号]
に更新したい値を代入します。
arr[0] = "grape"
p arr
=> ["grape", "orange", "lemon"]
要素の追加
配列の末尾に要素を追加するには、<<
を使って追加します。
arr << "grape"
p arr
=> ["apple", "orange", "lemon", "grape"]
ハッシュの操作
次は下記のように定義したハッシュに対して、取得や追加などの操作をそれぞれ行なってみましょう。
hash1 = { id: 1, name: "太郎", age: 20 }
hash2 = { "id" => 2, "name" => "次郎", "age" => 46 }
要素の取得
配列の要素の取得はインデックス番号を使用して取得していましたが、ハッシュの要素の取得はキーを使用して取得することができます。
val1 = hash1[:name]
p val1
=> "太郎"
val2 = hash2["name"]
p val2
=> "次郎"
要素の変更
要素の変更はキーで指定したハッシュに対して、更新したい値で代入を行うことでバリューの値を変更することができます。
hash1[:age] = 21
p hash1
=> {:id=>1 :name=>"太郎", :age=>21}
hash2["age"] = 47
p hash2
=> {"id"=>2, "name"=>"次郎", "age"=>47}
要素の追加
ハッシュへの要素の追加は新しいキーを用意して、そのキーに対する値を代入してあげることで追加することができます。
hash1[:key] = "hoge"
p hash1
=> {:id=>1 :name=>"太郎", :age=>21, :key=>"hoge"}
hash2["key"] = "hoge"
p hash2
=> {"id"=>2, "name"=>"次郎", "age"=>47, "key"=>"hoge"}
Arrayクラス、Hashクラスのメソッドを紹介
では配列を扱うArray
クラスやハッシュを扱うHash
クラスの便利なメソッドをそれぞれ見ていきましょう。
Arrayクラスのメソッド
eachメソッド
配列の要素を順番に取り出して、配列の要素の数だけ処理を実行します。
arr = ["apple", "orange", "lemon"]
arr.each do |i|
p i
end
=> "apple"
=> "orange"
=> "lemon"
変数iにarr
配列の要素が順番に渡されて、do ~ end
内の処理を繰り返し実行します。
empty?メソッド
空配列どうかを判定するメソッドです。
空配列の場合にtrue
を返し、空配列でない場合にfalse
を返します。
arr = ["apple", "orange", "lemon"]
p arr.empty?
=> false
lengthメソッド
配列の要素の数を返してくれます。
arr = ["apple", "orange", "lemon"]
p arr.length
=> 3
deleteメソッド
配列の要素の中から、引数で指定した値と==
で等しい値を削除します。
arr = ["apple", "orange", "lemon"]
arr.delete("orange")
p arr
=> ["apple", "lemon"]
include?メソッド
配列の要素の中に、引数で指定した値と==
で等しい値が含まれる場合にtrue
を返します。
含まれない場合にはfalse
を返します。
arr = ["apple", "orange", "lemon"]
p arr.include?("lemon")
=> true
Hashクラスのメソッド
eachメソッド
ハッシュのキーとバリューを順番に取り出して、ハッシュの要素の数だけ処理を実行します。
hash = { id: 1, name: "太郎", age: 20 }
hash.each do |k, v|
p [k, v]
end
=> [:id, 1]
=> [:name, "太郎"]
=> [:age, 20]
empty?メソッド
ハッシュが空かどうか判定します。
空の場合にtrue
を返し、空でない場合にfalse
を返します。
hash = { id: 1, name: "太郎", age: 20 }
p hash.empty?
=> false
lengthメソッド
ハッシュの要素の数を返します。
hash = { id: 1, name: "太郎", age: 20 }
p hash.length
=> 3
deleteメソッド
引数で指定したキーの要素をハッシュから削除します。
hash = { id: 1, name: "太郎", age: 20 }
p hash.delete(:age)
=> { id: 1, name: "太郎" }
has_key?メソッド
ハッシュのキーの中に、引数で指定したキーが含まれる場合にtrue
を返します。
含まれない場合にはfalse
を返します。
hash = { id: 1, name: "太郎", age: 20 }
p hash.has_key?(:name)
=> true
has_value?メソッド
ハッシュのバリューの中に、引数で指定したバリューが含まれる場合にtrue
を返します。
含まれない場合にはfalse
を返します。
hash = { id: 1, name: "太郎", age: 20 }
p hash.has_value?("次郎")
=> false
まとめ
Rubyでの配列やハッシュの扱い方から、Array
クラスやHash
クラスの便利なメソッドの使い方まで紹介してきました。
プログラミングを行う上で、配列やハッシュを使うことは避けては通れないと言っても過言ではないでしょう。
この記事をきっかけに理解を深めて頂けると筆者も嬉しいです。