ハッシュの初期値
Rubyの勉強
ハッシュのインスタンス作成時に初期値を与えることができるけど、すべてのキーが同じオブジェクトの値を指してしまうみたい。今まで初期値はnilしか使ったことが無かったので知らなかった。
違うオブジェクトを与えるにはブロックで代入させるようにする
h = Hash.new("foo") p h["a"] #=>"foo" p h["b"] #=>"foo" p h["a"].object_id #=>21626570 p h["b"].object_id #=>21626570 h["a"].succ! p h["a"] #=>"fop" p h["b"] #=>"fop" h = Hash.new{|h,k| h[k] = "foo"} p h["a"] #=>"foo" p h["b"] #=>"foo" p h["a"].object_id #=>21626350 p h["b"].object_id #=>21626310 h["a"].succ! p h["a"] #=>"fop" p h["b"] #=>"foo"