在指定索引处修改Ruby数组中的元素?

时间:2014-03-24 19:36:05

标签: ruby arrays matrix

我正在尝试在Ruby中学习数组操作,但是在修改数组中的指定元素时遇到了问题。

对于上下文,我正在编写一个生成Matrix的程序,然后对所述矩阵执行操作。矩阵定义为matix(i,j,val),其中i是行数,j是列数,val是填充矩阵的每个单元格的值它被实例化。

矩阵存储在由多个一维数组创建的data变量中,如下所示:

@data = Array.new(i) { Array.new(j) {val} }

我正在尝试编写一个函数set(i,j,val),它将(i,j)处的元素设置为val中存储的值。我试图通过迭代实现这一目标:

_i = 0
@data.each do |sub|
  if _i == i
    sub[j] = val
  end
  _i += 1
end

代码应迭代到矩阵中的i行并更改列j中的元素。遗憾的是,sub[j] = val并未更改该值。如何在指定的索引j处更改数组的值?

1 个答案:

答案 0 :(得分:2)

不要过分暗示这一点。显然,您知道需要更改哪个索引,因此您可以通过将[]方法链接在一起来直接访问它们。您不需要迭代一个值:

@data[i][j] = new_value