以下は、Rubyのバグか完全に正常なのでしょうか?Rubyハッシュバグ、アノマリまたはノーマル?
> a = [1, 2, 3].zip([[]]*3).to_h
=> {1=>[], 2=>[], 3=>[]}
> a[1] << 2
=> [2]
> a
=> {1=>[2], 2=>[2], 3=>[2]}
私は唯一の鍵が1
ある場所で2
を追加するためのものとして、すべての値が2
により追加取得することを期待しないでください。それはあなたがzip
で二番目の配列を作成しているとき以来、期待されている
Pythonでは、これは '[[]] * 3'が同じリスト(同じオブジェクト)の3つのリストになるために起こります。したがって、追加すると、すべてのキーに表示されます。 '[[]、[]、[]]'を使用してもこの問題は発生しませんが、Rubyが同じかどうかは分かりません。 –
ハッシュの各値のオブジェクト_idは何ですか? –
彼らはすべて同じ 'object_id'を持っています – Lokesh