[#50231] [ANN] OedoRubyKaigi05 — SASADA Koichi <ko1@...>
下記の要領で大江戸Ruby会議05を行なうのでご連絡します。
5 messages
2015/10/08
[#50240] Hash.new([])の挙動について — Kunimi Ikeda <kunimi.ikeda@...>
44GE44GR44Gg44Go55Sz44GX44G+44GZ44CCDQoNCmEgPSB7fQ0KYVsna2V5J10gPSBbXSB1bmxl
10 messages
2015/10/27
[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はできる。
中田 伸悦