Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何修改二维数组中的位置?_Ruby - Fatal编程技术网

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)实例化数组时,才建议使用该方法