Ruby数组奇怪的行为

Ruby数组奇怪的行为,ruby,arrays,Ruby,Arrays,我误解了你的行为 当我创建这个矩阵时 matrix, cell = [], []; 5.times { cell << [] } # columns 3.times { matrix << cell } # lines matrix sample_data = (0..5).to_a matrix[1][2] = sample_data.clone matrix.each { |line| puts "line : #{line}" } 而不是预期的结果 line :

我误解了你的行为

当我创建这个矩阵时

matrix, cell = [], []; 5.times { cell << [] } # columns
3.times { matrix << cell } # lines
matrix
sample_data = (0..5).to_a
matrix[1][2] = sample_data.clone
matrix.each { |line| puts "line : #{line}" }
而不是预期的结果

line : [[], [], [], [], []]
line : [[], [], [0, 1, 2, 3, 4, 5], [], []]
line : [[], [], [], [], []]

怎么了?

您的线路有问题:

3.times { matrix << cell }

然后您将得到所需的结果。

您将同一对象(单元)放入矩阵三次

这将修复您的错误:

3.times { matrix << cell.clone } # lines

3.times{matrix或由于单元格为空,只需使用新的[]而不是指定单元格…
3.times{matrix
3.times { matrix << cell.dup } 
3.times { matrix << cell.clone } # lines