为什么从密钥中删除密钥,将密钥从另一个密码中删除?
问题描述:
为什么从密钥中删除密钥,将密钥从哈希中删除?为什么从密钥中删除密钥,将密钥从另一个密码中删除?
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"}
它是一个参考?
答
因为#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
+0
谢谢!我不知道'dup'选项。 – user2503775
是的,它是一个参考 – emaillenin