ハッシュは、「データ」とそれに対応する「名前」のセットを要素として持つ値です。
ハッシュにおいては、データをバリュー、それに対応する名前をキーと呼びます。
ハッシュは順番ではなく、キーで管理をし、このようなキーとバリューで管理する方式をキーバリューストアと呼びます。
ハッシュの生成は
変数 = { キー1 => バリュー1, キー2 => バリュー2, キー3 => バリュー3 }
のように波括弧で囲い、ハッシュロケットと呼ばれる=>を用いてキーとバリューをセットにして記述します。
またハッシュのキーには、文字列も数値も使用できますが、多くの場合、シンボルという値が使用されます。
例
irb(main):004:0> a = {'name' => 'nanashi', 'birthplace' => 'tokyo', 'age' => '20'}
=> {"name"=>"nanashi", "birthplace"=>"tokyo", "age"=>"20"}
irb(main):005:0> puts a['name']
nanashi
=> nil
変数aにハッシュを宣言しキーnameの値を取り出したいときはこのようにputs 変数['キー']で取り出します。
シンボルは、見た目は文字列のようですが、実際の中身は数値になっている値です。
シンボルの宣言は、文字列の先頭にコロン:をつけます。
# 以下はどちらも同じ要素 hash = { :name => "Taro" } hash = { name: "Taro" } # よく使用される
シンボルを使う理由としてコンピューターは、文字列を扱うよりも、数値を扱うほうが処理速度は速くなります。処理速度を速くすることと、文字列としての役割も果たせることから、ハッシュのキーには、文字列よりもシンボルを用いることが多いです。
例
irb(main):006:0> a ={ name: 'nanashi', birthplace: 'tokyo', age: '20'}
=> {:name=>"nanashi", :birthplace=>"tokyo", :age=>"20"}
irb(main):007:0> puts a[:name]
nanashi
=> nil
変数aにハッシュを宣言しキーnameの値を取り出したいときはこのようにputs 変数[:キー]で取り出します。