From: Nobuyoshi Nakada Date: 2015-10-27T16:30:33+09:00 Subject: [ruby-list:50246] Re: Hash.new([])の挙動について On 2015/10/27 13:17, Kamiya Kenichi wrote: > 恐らく、意図されているものに近いコードは、 > > a = Hash.new { |hash, key| hash[key] = [] } > > なんじゃないかなぁと思います。 これはよく使われるパターンなのですが、参照しただけでkeyが追加されるという点に注意が必要です。 以下のように追加と代入を同時に行うという方法もありますが a = Hash.new {[]} a['key'] <<= 1 a['key'] <<= 2 a['key'] <<= 3 どちらにしても、二つ目以降でもaがfeezeされている場合には例外になるというのは防げないわけで、 すべてを満たすような書き方はなかなかないようです。 -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦