【发布时间】:2014-03-24 19:36:04
【问题描述】:
我正在尝试学习 Ruby 中的数组操作,但无法修改数组中的指定元素。
对于上下文,我正在编写一个程序,它产生一个矩阵,然后对所述矩阵执行操作。矩阵定义为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
代码应该迭代到矩阵中的ith 行并更改j 列中的元素。不幸的是,sub[j] = val 不会更改该值。如何更改指定索引j处的数组值?
【问题讨论】:
-
我们需要查看您的示例输入以及您希望输出的样子。
-
1) 为什么不使用实际的二维矩阵来存储值,并添加一个返回
@data[i][j] || @val的 getter? 2)如果您尝试创建稀疏矩阵,您可能会考虑使用散列而不是一维数组作为后备存储?这有一个额外的好处是可以为哈希分配一个默认值。