2015-10-05 29 views
1

這個函數讀取一個文件並將數據插入到一個多維數組中,但是看起來,在每次將temp推入$ table時,它將完全覆蓋$ table中的每個元素與temp中的內容。RUBY將數組推入數組覆蓋所有以前的元素?

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 

任何人都可以解釋這種行爲,並幫助我調試它嗎?

回答

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 
+1

唯一代碼的答案都望而卻步。請至少描述您所做的更改,或只發布代碼的相關部分。 – SirDarius

+0

我覺得問題是在臨時,所以我只是改變在做循環中的臨時變量的地方 –