Arrays 如何确保嵌套数组不';Ruby中的t更新

Arrays 如何确保嵌套数组不';Ruby中的t更新,arrays,ruby,Arrays,Ruby,在Ruby中运行此代码时: outerarr = [] innerarr = [1] outerarr.push(innerarr) innerarr[0] += 1 那么外层将是[[2]] 我理解为什么会发生这种情况,但是否有一种方法可以“断开”innerarr,也就是说,当innerarr更新时,Outerar不会改变(即保持为[[1]]) 谢谢。如果您创建原始阵列的副本,它应该可以工作。如 outerar.push(innerarr.dup)数组是第一类对象。当一个数组(对象)引用另一

在Ruby中运行此代码时:

outerarr = []
innerarr = [1]
outerarr.push(innerarr)
innerarr[0] += 1

那么外层将是[[2]]

我理解为什么会发生这种情况,但是否有一种方法可以“断开”innerarr,也就是说,当innerarr更新时,Outerar不会改变(即保持为[[1]])


谢谢。

如果您创建原始阵列的副本,它应该可以工作。如
outerar.push(innerarr.dup)

数组是第一类对象。当一个数组(对象)引用另一个数组(对象)时,当引用更改状态时,它将得到反射。这是面向对象编程的基本规则。您是否希望保持
innerarr
可更改,只是
outerarr
不应更改?或者,您想确保将
innerarr
推入
outerarr
后不能再更改它吗?运行
innerarr[0]+=1
后,
innerarr
outerar
的预期输出是什么?