为什么在哈希中向数组追加一个值也会修改分配给它的另一个变量?

Yan*_*nto 1 ruby arrays hash

示例代码:

hash_of_array = { a: [] }
b = hash_of_array
c = hash_of_array

b[:a] << 1

puts b # => { a: [1] }
puts c # => { a: [1] }
Run Code Online (Sandbox Code Playgroud)

为什么两个变量的数组都有1?我只将它附加在变量上b.

试穿

  • Ruby版本2.3.1,2.4.0
  • Rbenv

ndn*_*kov 6

我认识一个叫约翰的人.有人叫他约翰尼.约翰尼今天开枪了.为什么约翰也被枪杀了?


foo = _something_
Run Code Online (Sandbox Code Playgroud)

只需给出替代名称foo即可_something_.它不会克隆它或做任何其他恶作剧.

  • 赞成上面和"shenanigans"字:) (3认同)