ハッシュ忘れてた。

何故かハッシュのお勉強を忘れてしまっていた。近頃、忘れっぽくて困る。今日はメガネをかけたまま顔を洗おうとしてしまった。
何はともあれハッシュの初期化。

hash = Hash.new
hash["key1"] = 1
hash["key2"] = 2
p hash

結果。

{"key1"=>1, "key2"=>2}

まとめて初期化。

hash = {
  "key1" => 1,
  "key2" => 2
}
p hash

結果。

{"key1"=>1, "key2"=>2}

同じ。
中身を列挙する。

for key, value in hash do
  printf("%s = %d?n", key, value)
end

hash.each do |key, value|
  printf("%s = %d?n", key, value)
end

結果。どちらも同じ。

key1 = 1
key2 = 2

値を追加する。

hash = {
  "key1" => 1,
  "key2" => 2
}
p hash

hash["key3"] = 3
p hash

結果。

{"key1"=>1, "key2"=>2}
{"key1"=>1, "key2"=>2, "key3"=>3}

初期化時の要注意。

hash1 = Hash.new
p hash1["key1"]

hash2 = Hash.new(0)
p hash2["key1"]

結果。

nil
0

コンストラクタに引数を渡すと、valueの初期値となり、存在しないkeyの値を取得しようとすると、その値が返される。


Ruby プログラミング基礎講座

Ruby プログラミング基礎講座