RUBY将数组推入数组会覆盖以前的所有元素吗?

时间:2015-10-05 08:31:10

标签: arrays ruby push

这个函数读取一个文件并将数据插入到一个多维数组中,但似乎每次将temp推送到$ table时,它都会用temp中的内容完全覆盖$ table中的每个元素。

def self.read_file
i = 0
j = 0
$table = []
$n = 0
temp = []

first_line = true

IO.foreach("data.dat") do |line|
  data = line.split
  if first_line
    $n = data[0].to_i
    first_line = false
    puts('Read first line')
    puts $n
 else
   while (j < $n)
     temp[j] = data[j].to_i
     j = j + 1
   end
   $table << temp
   i = i + 1
   j = 0
  end
p $table
end

end

任何人都可以解释这种行为并帮我调试吗?

1 个答案:

答案 0 :(得分:2)

我已经编辑了你的方法。它应该工作。

   def self.read_file
       i = 0
       j = 0
      table = []
       n = 0
     first_line = true
     IO.foreach("data.dat") do |line|
       temp=[]
       data = line.split
       if first_line
        n = data[0].to_i
       first_line = false
       puts('Read first line')
      puts n
   else
      while (j < n)
         temp[j] = data[j].to_i
          j = j + 1
       end
    table << temp
     i = i + 1
      j = 0
   end
    p table
  end
 end