Rubyベストプラクティス -プロフェッショナルによるコードとテクニックを読んでいて発見がありました

ハッシュの各要素にはデフォルト値をあらかじめ指定しておけるのですね。

しかし、配列で初期化したい場合、先ほどのように単純にインスタンスを渡したら意図した結果になりません。

どんなキーの時でも生成時に渡した同じ配列のインスタンスが使われるためです。

これを避けるためにブロックを渡して再生成すればいいのかな?と思い、やってみたら毎回新しい配列が生成されてダメでした(笑)

このケースのための初期化方法もちゃんと用意されていて次のようにします。

ハッシュを使うときに要素がnilだったら[]を入れて...ってやっていたところをリファクタリングしなきゃ。

リファレンスマニュアルにもしっかり書かれています(笑)

http://doc.ruby-lang.org/ja/1.9.3/method/Hash/s/new.html