[ruby-list:50241] Re: Hash.new([])の挙動について

From: keiichi matsunaga <ma2@...>
Date: 2015-10-27 04:15:30 UTC
List: ruby-list #50241
On 2015/10/27 12:57, Kunimi Ikeda wrote:

> a = Hash.new([])

Hashのnewの引数は「Hashのキーに対応する値がないときにデフォルトで返され 
る値」なので、

 > a['key'] << 1

とやると、a['key']に対応する値がないためにデフォルト(空の配列)を書き換 
えることになります。

 > a['key'] << 2
 > a['key'] << 3

これで次々とそのデフォルトのを書き換えています。
aそのものには何も設定されていないので、{}のままです。

a.defaultとすると分かると思います。
リファレンスのこのへんに説明があります。

http://docs.ruby-lang.org/ja/2.1.0/method/Hash/s/new.html


-- 
松永肇一(keiichi matsunaga)
株式会社ライフメディア(http://lifemedia.jp) システム開発部

In This Thread