Arrays Ruby中数组的问题

Arrays Ruby中数组的问题,arrays,ruby,Arrays,Ruby,我创建一个数组并编辑值: arr = Array.new(6, Array.new(2, '0')) arr[0][0] = 'name' arr[1][0] = 'id' arr[2][0] = 'type' arr[3][0] = 'sum' arr[4][0] = 'partner' arr[5][0] = 'time' 然后我有了这个数组: [["time", "0"], ["time", "0"], ["time", "0"], ["time", "0"], ["time", "0"

我创建一个数组并编辑值:

arr = Array.new(6, Array.new(2, '0'))
arr[0][0] = 'name'
arr[1][0] = 'id'
arr[2][0] = 'type'
arr[3][0] = 'sum'
arr[4][0] = 'partner'
arr[5][0] = 'time'
然后我有了这个数组:

[["time", "0"], ["time", "0"], ["time", "0"], ["time", "0"], ["time", "0"], ["time", "0"]]
当我需要这个时:

[["name", "0"], ["id", "0"], ["type", "0"], ["sum", "0"], ["partner", "0"], ["time", "0"]]

我做错了什么?

根据Ruby Array文档:

注意,第二个参数使用对同一对象的引用填充数组。因此,仅当您需要使用本机不可变对象(如符号、数字、true或false)实例化数组时,才建议使用此选项。

这就解释了为什么

arr[0][0] = 'name'
将所有关键点设置为相同的值。在你的情况下,最后一个赢了,所以它的时间

你到底想达到什么目的?设置默认值?如果是,请使用块语法预填充数组,如:

 arr = Array.new(6) { [2, '0'] }

试试这个。

我正在尝试创建一个包含成对值的数组。每次我使用
arr[0][0]=“name”
之类的方法设置值时,我都会遇到与ruby中的二维数组相同的问题。我认为这是使用2d数组的错误方法,但我还没有找到任何其他方法。@M.Sakovich首先,Ruby中没有2d数组,只有数组的数组;这也许是个小问题,但它是偶然引用共享的真正问题的基础。如果您想创建一个数组数组,请使用块形式的
array.new
,正如Cody建议的那样:
array.new(n){[]}
。另请参见,以及其他许多内容。别难过,副本不容易找到(除非你已经知道答案)。
arr = Array.new(6){Array.new(2,'0')}
arr[0][0] = 'pan'
arr[1][0] = 'id'
arr[2][0] = 'type'
arr[3][0] = 'sum'
arr[4][0] = 'partner'
arr[5][0] = 'time'
puts arr