为什么可以这样做呢?我不希望是这样。
CAD={:hey => {a: [1], b: [2]}}.freeze
CAD.frozen? #=> true
p=CAD[:hey][:a] #=> [1]
p << nil #=> [1, nil]
CAD #=> {:hey=>{:a=>[1, nil], :b=>[2]}}更新
我找到了一个解决方案,多亏了答案:http://blog.flavorjon.es/2008/08/freezing-deep-ruby-data-structures.html
发布于 2014-08-13 11:38:10
只有由CAD表示的哈希对象被冻结,而不是像CAD[:hey][:a]那样在哈希上引用的其他对象。
> CAD={:hey => {a: [1], b: [2]}}.freeze
=> {:hey=>{:a=>[1], :b=>[2]}}
> CAD.frozen?
=> true
> CAD[:hey].frozen?
=> false
> CAD[:hey][:a].frozen?
=> falsehttps://stackoverflow.com/questions/25285072
复制相似问题