ruby - 克隆一个数组及其内容

标签 ruby object copy clone

我想复制一个数组,在不影响原始数组的情况下就地修改副本。此代码失败

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/

相关文章:

c++ - Ruby:取消引用指针

javascript - 函数应该附加到对象或其原​​型上吗?

javascript - javascript类中的自动增量值

java - 用列表数据填充一个数组并添加一个元素

visual-studio - 将整个目录复制到输出文件夹并保持文件夹结构?

ruby - Delayed_job 导致 Heroku 工作线程崩溃(YAML 问题?)

ruby - 如何避免使用 erb 模板中的引号生成内容?

javascript - 混淆/缩小动态生成的 javascript 的最佳方法是什么

Javascript OOP 和数组

javascript - 我有几个文本值数组,我想选择其中一个数组用作 HTML 数据列表