まくまくRubyノート
ハッシュの基本
2011-10-07

ハッシュとは

ハッシュ (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]
2011-10-07