當我運行我的代碼,我得到如下:零:NilClass(NoMethodError)錯誤
cities.rb:70:in `sell_is_valid': undefined method `[]' for nil:NilClass (NoMethodError)
from cities.rb:103
from cities.rb:79:in `each'
from cities.rb:79
下面是該代碼:
def sell_is_valid(num, type)
puts "The most loads of #{type} you can sell is #{@train[num]}." #Line 66
puts "How many #{type} would you like to sell?"
prompt; value = gets.chomp.to_i
if @train[num] <= value
@wallet = @wallet + (value * @cities[@current_location][num]) #Line 70
@storage = @storage + value
@train[num] = @train[num] - value
else
puts "You're trying to buy too much!"
end
end
所以後來我所做的就是做了一個看跌期權在線70.
puts @wallet
puts @cities[@current_location][num]
這次在puts @cities [@current_location] [num]行上出現同樣的錯誤。所以我知道這是做什麼的。但是,我通過我的代碼使用該行。例如,按照我的遊戲流程(您必須先購買一些東西,然後才能出售它),在buy_is_valid函數中執行三次完全相同的行,而不會出現問題。我也做了一個數字,它給了我一個有效的數字。它也正在66線正確使用。
有關如何跟蹤此問題的任何想法?
EDIT
p @cities
p @current_location
返回
{:new_york=>[2, 25, 12], :chicago=>[18, 12, 2], :dallas=>[16, 12, 4], :omaha=>[16, 5, 5], :seattle=>[2, 29, 16]}
"new_york"
'@ current_location'是 「new_york」 但你在'@ cities'鍵都是有符號(即':new_york')。索引時將@current_location轉換爲符號,也許? '@cities [@ current_location.to_sym] ...' – BaronVonBraun
@baaron,看起來是修復它。關閉研究符號! –