在ruby循环中将对象添加到数组将最新对象持久化到所有数组项

在ruby循环中将对象添加到数组将最新对象持久化到所有数组项,ruby,arrays,object,Ruby,Arrays,Object,下面的代码演示了一个ruby(1.8.7)for循环,其中从excel中读取的列和标题保存为对象(对象属性:header=string,contents=strings数组)。当我在几列中阅读时,我想将它们保存为一个对象数组 问题在于,每个循环在递增数组“矩阵”并成功存储新对象的同时,似乎都会用最新的对象覆盖矩阵数组中以前的元素。当我遍历完成的数组时,我只得到同一对象的x个实例 column_count = count_columns(worksheet) row_count = cou

下面的代码演示了一个ruby(1.8.7)for循环,其中从excel中读取的列和标题保存为对象(对象属性:header=string,contents=strings数组)。当我在几列中阅读时,我想将它们保存为一个对象数组

问题在于,每个循环在递增数组“矩阵”并成功存储新对象的同时,似乎都会用最新的对象覆盖矩阵数组中以前的元素。当我遍历完成的数组时,我只得到同一对象的x个实例

  column_count = count_columns(worksheet)
  row_count = count_rows(worksheet)

  matrix = Array.new
  #i don't think header needs to be an array in the below loop, but anyway...
  header = Array.new
  contents = Array.new

  for column in 0..column_count - 1
    header[column] = worksheet.Cells(1, column + 2).Value
    for row in 0..row_count
      contents[row] = worksheet.Cells(row + 2, column + 2).Value
    end
    matrix[column] = Worksheet_Column.new(header[column], contents)
  end


  #looping after the array was created puts the same information in each iteration
  for column in 0..matrix.length - 1
    puts "loop = #{column}"

    puts matrix[column]
  end

嗯,我仍然不知道是什么基本错误导致了内容向后写入,但是注意到问题发生在内容上,而不是标题上,这个解决方案是成功的

for column in 0..column_count - 1
  contents[column] = Array.new
  header[column] = worksheet.Cells(1, column + 2).Value
  for row in 0..row_count
    contents[column][row] = worksheet.Cells(row + 2, column + 2).Value
  end
  matrix[column] = Worksheet_Column.new(header[column], contents[column])
end

请使用
。每个
。每个都有索引