访问和修改二维数组

时间:2014-01-03 20:38:20

标签: ruby

matrix = Array.new(2, Array.new(2, 0))
=> [[0, 0], [0, 0]]

matrix[0][0] = 5
=> 5

matrix
=> [[5, 0], [5, 0]]

为什么会这样?在修改赋值时,我得到以下结果:

matrix = [[0, 0], [0, 0]]
=> [[0, 0], [0, 0]]

matrix[0][0] = 5
=> 5

matrix
=> [[5, 0], [0, 0]]

1 个答案:

答案 0 :(得分:3)

在第一个示例中,您将在[2, 0]的第二个参数中传递数组对象Array.new。主阵列将在两个位置填充相同的阵列。如果修改其中一个,则也会修改另一个位置的相同数组。

在第二个示例中,每个子数组都是不同的数组。修改其中一个不会修改另一个。