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