運行下面的代碼:紅寶石爲無返回undefined方法+:nilClass
# experiment
time = 5000
# when time reaches 10000, I'm off duty
def speedup_time(incre)
time += incre
yield(time)
end
puts "is the day over yet? #{speedup_time(2000){
if incre >= 10000
"yes: #{time}"
else
"no: #{time}"
end
}}"
我就遇到了這個錯誤:undefined method "+" for nil:nilClass
。
Ruby應該'提高未定義的局部變量或方法'時間',但解析器將'time'變成'nil',我無法理解'def'範圍內爲什麼'time'等於'nil'? – 2014-09-25 16:26:38
@Зелёный,因爲解析器看到了這個'time =',所以解析器創建一個名爲time的變量並將它標記爲局部變量。這意味着時間變量存在,但尚未分配一個值。然後代碼執行,並引發錯誤。即使分配語句不可能執行,解析器也會這樣做,例如, '如果是假的;時間= 10;結束' – 7stud 2014-09-25 16:37:29