我还在学习红宝石的基础知识,所以我想我会尝试制作一个乘法表
x = (0..7).to_a
y = []
x.each { y << x }
y
现在是一个 8x8 数组,其中每一行都是相等的。这些只是我不想要的占位符值,因此我尝试遍历数组索引以更改值。
x.each { |i| y[i][i] = i * i }
此时,y
变成一个包含 8 列的数组[0, 1, 4, 9, 16, ...]
。我理解为什么我只收到平方值,但我不明白为什么y[1][3]
,例如,当我只期望索引值如 , 被改变时,为什么会[1][1]
被[2][2]
改变。
此外,即使我从未故意重新分配它的值,也会重新分配 的值x
。[0, 1, 4, 9, 16, ...]
通过上面的代码部分,它的值被自动重新分配,我不明白为什么。
我总是可以自己查找另一种方法来制作这样的表,但我想了解发生了什么x
导致它改变了它的值,以及为什么通过索引的迭代没有按预期运行。当我能理解为什么我更简单的尝试会产生无效输出时,我将继续更正确地迭代 2D 数组的每个索引。我想自己解决这个相当基本的任务,但我现在遇到了障碍。