【发布时间】:2016-10-27 04:34:36
【问题描述】:
在编写程序时,我发现了一些有趣的东西。如果我定义a = b,我将<< 到b 的任何更改都反映在a 中,反之亦然。
Ruby 不会创建 b 的重复自主副本并将其以不同的方式存储在 a 中吗?
如果没有,我如何在对主阵列进行操作的同时,存储阵列在特定时间点的未篡改快照?
>> a = b = [0, 1]
=> [0, 1]
>> a
=> [0, 1]
>> b
=> [0, 1]
# so far so good
>> a << 2
=> [0, 1, 2]
>> a
=> [0, 1, 2]
>> b
=> [0, 1, 2]
# huh?! that can't be right, lemme try this the other way around
>> b << 3
=> [0, 1, 2, 3]
>> a
=> [0, 1, 2, 3]
>> b
=> [0, 1, 2, 3]
# what is going on here?!
【问题讨论】:
标签: ruby