Ruby 如何修改二维数组中的位置?
如果我这样做:Ruby 如何修改二维数组中的位置?,ruby,Ruby,如果我这样做: table = Array.new( 3, Array.new( 3, nil ) ) # => [ [nil, nil, nil], [nil, nil, nil], [nil, nil, nil] ] 现在我想修改第二个数组中索引2处的值,因此我将执行以下操作: table[1][2] = 2.343 我现在希望看到: # => [ [nil, nil, nil], [ni
table = Array.new(
3,
Array.new(
3,
nil
)
)
# =>
[
[nil, nil, nil],
[nil, nil, nil],
[nil, nil, nil]
]
现在我想修改第二个数组中索引2处的值,因此我将执行以下操作:
table[1][2] = 2.343
我现在希望看到:
# =>
[
[nil, nil, nil],
[nil, nil, 2.343],
[nil, nil, nil]
]
然而,我得到的是:
[
[nil, nil, 2.343],
[nil, nil, 2.343],
[nil, nil, 2.343]
]
我在这里没有得到什么
PS:运行ruby 2.3本质上是说创建一个包含三个元素的数组,并将这个元素(新数组)放在每个空格中。放入第一个数组的元素只创建一次。我所知道的做您想要的事情的唯一方法是使用for循环将您需要的尽可能多的新数组推入第一个数组。大概是这样的:
table = Array.new(1, Array.new(3, 0))
0..1.each do |i|
table.push(Array.new(3, 0)) #add two more arrays to the first dimension
end
实际上,您是说创建一个包含三个元素的数组,并将此元素(新数组)放在每个空间中。放入第一个数组的元素只创建一次。我所知道的做您想要的事情的唯一方法是使用for循环将您需要的尽可能多的新数组推入第一个数组。大概是这样的:
table = Array.new(1, Array.new(3, 0))
0..1.each do |i|
table.push(Array.new(3, 0)) #add two more arrays to the first dimension
end
有关行为修复,请尝试下一步:
empty_table = Array.new(3) { Array.new(3) }
从阵列手册:
请注意,第二个参数使用对同一对象的引用填充数组。因此,只有在需要使用本机不可变对象(如符号、数字、true或false)实例化数组时,才建议使用该方法
有关行为修复,请尝试下一步:
empty_table = Array.new(3) { Array.new(3) }
从阵列手册:
请注意,第二个参数使用对同一对象的引用填充数组。因此,只有在需要使用本机不可变对象(如符号、数字、true或false)实例化数组时,才建议使用该方法