Arrays 如何确保嵌套数组不';Ruby中的t更新
在Ruby中运行此代码时: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)数组是第一类对象。当一个数组(对象)引用另一
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
的预期输出是什么?