Ruby 一个纠结的 hash 问题

hastings · 2015年01月08日 · 最后由 hastings 回复于 2015年01月08日 · 1515 次阅读

:047 > aa= [{a: 1, b:2}, {c: 2, b: 2}] => [{:a=>1, :b=>2}, {:c=>2, :b=>2}] :048 > bb = aa.clone => [{:a=>1, :b=>2}, {:c=>2, :b=>2}] :049 > c=aa.group_by{|item| item[:b]} => {2=>[{:a=>1, :b=>2}, {:c=>2, :b=>2}]} :050 > c[2]=c[2].map{|x| x[:a] = 3;x} => [{:a=>3, :b=>2}, {:c=>2, :b=>2, :a=>3}] :051 > aa => [{:a=>3, :b=>2}, {:c=>2, :b=>2, :a=>3}] :052 > bb => [{:a=>3, :b=>2}, {:c=>2, :b=>2, :a=>3}]

如何避免 bb 的值被改变?

似乎有个 deep_clone 吧

找到了,用 deep_dup,deep_clone 不存在

需要 登录 后方可回复, 如果你还没有账号请 注册新账号