我想复制一个数组,在不影响原始数组的情况下就地修改副本。此代码失败
a = [
'462664',
'669722',
'297288',
'796928',
'584497',
'357431'
]
b = a.clone
b.object_id == a.object_id # => false
a[1][2] = 'X'
a[1] #66X722
b[1] #66X722
副本应与对象不同。为什么它看起来像是一个参考?
最佳答案
你需要对你的阵列做一个深度拷贝。
这是方法
Marshal.load(Marshal.dump(a))
这是因为您正在克隆数组,而不是其中的元素。所以数组对象是不同的,但是它包含的元素是相同的实例。例如,您还可以为您的案例执行
a.each{|e| b << e.dup}
操作关于ruby - 克隆带有其内容的数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31455309/