ハッシュを初期化する時の注意点
デフォルトの初期値 (キーがない場合の値) はnil
空のハッシュが生成される
Hash.new #=> {}
メソッドに引数を渡すことで、初期値を指定できる
code:ex_hash_new_defaut.rb
h = Hash.new('hello')
# ハッシュは空
存在しないキーで取得した値のオブジェクトIDは同じ
メソッドにブロックを渡すと、初期値はブロックの返り値から取得される
code:ex_hash_new_default_block.rb
h = Hash.new { 'hello' }
# ハッシュは空
存在しないキーで取得した値のオブジェクトIDは異なる
ブロック引数で、ハッシュ自身とキーを渡して、渡したキーと初期値の組みをハッシュに追加できる
code:ex_hash_new_default_block2.rb
h = Hash.new { |hash, key| hashkey = 'hello' } # ハッシュにキーと値が追加されている
h #=> {:foo=>"hello", :bar=>"hello"}