为什么从哈希中删除密钥,也将其从其他哈希中删除?
msg = { key1: "XXX",key2: 'xxx' }
send_msg(msg)
send_msg(msg)
def send_message(msg)
p msg
msg.delete(:key1)
end
输出:
=> { key1: "XXX",key2: 'xxx' }
=> { key2: 'xxx' }
此外:
irb(main):023:0> a = { key1: "XXX",key2: 'xxx' }
=> {:key1=>"XXX", :key2=>"xxx"}
irb(main):024:0> b=a
=> {:key1=>"XXX", :key2=>"xxx"}
irb(main):025:0> a.delete(:key1)
=> "XXX"
irb(main):026:0> a
=> {:key2=>"xxx"}
irb(main):027:0> b
=> {:key2=>"xxx"}
是参考吗?
答案 0 :(得分:1)
因为#delete
会改变原始的msg
哈希值。如果您希望msg
保持完整,请将重复传递给send_msg
:
msg = { key1: "XXX",key2: 'xxx' }
send_msg(msg.dup)
send_msg(msg.dup)
def send_message(msg)
p msg
msg.delete(:key1)
end