概要
5つの配列の要素に対してハッシュで初期化したい。
ary = [{},{},{},{},{}]
これを作りたい。
正しい例
irbで実験。
ary = Array.new(5){{}}
=> ary = [{},{},{},{},{}]
ary[0][:hoge] = "test"
=> "test"
ary
=> [{:hoge=>"test"}, {}, {}, {}, {}]
上記はコメント頂いて修正したコードです。(2016/01/21)
# 記事初稿時のコード
ary = Array.new(5).map{Hash.new}
誤った例
irbで実験。
ary = Array.new(5, Hash.new)
=> ary = [{},{},{},{},{}]
ary[0][:hoge] = "test"
=> "test"
ary
=> [{:hoge=>"test"}, {:hoge=>"test"}, {:hoge=>"test"}, {:hoge=>"test"}, {:hoge=>"test"}]
同一を参照してしまうため、
意図しない挙動になってしまう。