這裏是我的代碼:未定義的方法[]爲nil:NilClass(NoMethodError)在ruby中...爲什麼?
begin
items = CSV.read('somefile.csv')
linesAmount = CSV.readlines('somefile.csv').size
counter = 1
while linesAmount >= counter do
fullrow = items[counter]
firstitem = fullrow[0] #This is the line that my code doesn't like.
puts firstitem
counter = counter + 1
end
end
對於一些紅寶石不喜歡這一行,在那裏我有=與firstItem fullrow [0]。它引發了未定義的方法[]錯誤。但是,在控制檯中,我仍然可以看到它打印第一項...所以它仍然打印它,但仍然會引發錯誤?這是怎麼回事?但是,如果我將while循環的while循環的前三行放在while循環的外部,並註釋掉循環中除計數器行以外的所有內容,那麼我不會收到任何錯誤。因此,如果第一行項出現在while循環之外,代碼認爲它沒有問題。
編輯:我知道數組從0開始,但我特別想反擊,不關心第一行。我忘了提及那個,對不起。
編輯2:謝謝大家,我通過在linesAmount後面加-1來解決它,它起作用!
數組在紅寶石是從零開始的。在'counter == linesAmount'上是'linesAmount + 1'行,'items [counter]'是可以預測的nil。因此'fullrow'是零,因此是一個錯誤。在控制檯中看到的是前一個循環的打印值。順便說一句,整個代碼看起來太麻煩了。 'items.each'在這裏更適合。 – mudasobwa
不要在問題中提出答案。 –