在這個例子中,我不理解紅寶石本地作用域
def foo(x)
if(x > 5)
bar = 100
end
puts bar
end
然後FOO(6)輸出:100 和Foo(3)輸出什麼。
但是,如果我改變了定義
def foo(x)
if(x > 5)
bar = 100
end
puts bob
end
我得到一個「未定義的局部變量或方法」錯誤。
所以我的問題是爲什麼我沒有得到這個錯誤,當我打電話富(3)和酒吧從未設置?
謝謝,是的,我明白在哪裏bob錯誤就是不知道爲什麼我沒有得到一個酒吧錯誤。你知道我能否依靠這種行爲,它是否是規範的一部分?例如,我可以在if語句之後檢查bar是否爲零,還是應該在if語句之前顯式聲明bar = nil? – rebo 2010-11-11 13:55:57
是的,這是可靠的行爲。聲明bar = nil肯定會更明確。但我不知道大多數紅寶石主義者會這樣做。如果你將自己的方法縮小,就不應該很難理解,或者看到酒吧來自哪裏。 – Todd 2010-11-11 14:28:23