ハッシュ (Hash
) は、キーと値のペアを格納するコレクションであり、配列 (Array
) と似ていますが、任意の型のオブジェクトをキーとすることができます。
Ruby でハッシュを生成するときは {}
を使用します(配列を生成するときは []
を使用します)。
my_hash = {}
my_hash = Hash.new
ハッシュを生成するときに、キーと値のペアを =>
で並べて指定することで、ハッシュの初期値を設定することができます。
person_info = {
'name' => 'makkuma',
'age' => 100,
'mail' => 'makkuma@example.com'
}
一行で記述する事もできます。
my_hash = {'key1' => 'val1', 'key2' => 'val2'}
上記では、文字列をキーとしてハッシュを扱っていますが、別の型のオブジェクトをキーとして扱うこともできます。
ハッシュの要素を参照するときは、配列の要素を参照するときと同様に []
を使用します。
puts person_info['name'] #=> "makkuma"
person_info['age'] = 200
存在しないキーで値を取得しようとすると、nil
が返されます。
puts person_info['xxx'] #=> nil
参考: ハッシュのデフォルト値を設定する
[]
によるハッシュの生成Hash
クラスのクラスメソッドである []
を使ってハッシュを初期化することもできます。
クラスメソッド []
を使用すると、=>
でキーと値を並べる代わりに、キー, 値, キー, 値
というカンマ区切りで交互に並べるという初期化構文を使用できます。
my_hash = Hash['key1' => 'val1', 'key2' => 'val2']
my_hash = Hash['key1', 'val1', 'key2', 'val2']
アスタリスク *
による配列要素の展開機能と一緒に使用すれば、配列に格納された値からハッシュを生成することができます。
my_arr = ['key1', 'val1', 'key2', 'val2']
my_hash = Hash[*my_arr]