[#50231] [ANN] OedoRubyKaigi05 — SASADA Koichi <ko1@...>
下記の要領で大江戸Ruby会議05を行なうのでご連絡します。
5 messages
2015/10/08
[ruby-list:50246] Re: Hash.new([])の挙動について
From:
Nobuyoshi Nakada <nobu@...>
Date:
2015-10-27 07:30:33 UTC
List:
ruby-list #50246
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はできる。
中田 伸悦