2010-09-11 116 views
0

我通常都會有一些代碼,如下所示:紅寶石:未定義的局部變量或方法變通

return if foo.nil? 
bar = foo[:bar] || 0 

與他們之上的是,如果富的問題[:巴]不存在,我得到因爲NameError異常得到投擲一個HTTP 500錯誤,看起來像:

NameError (undefined local variable or method `foo'..) 

什麼是一個更優雅的解決辦法?

回答

0

有一個插件可以讓你更簡單,叫做andand。它會告訴你做這樣的事情:

bar = foo.andand[:bar] || 0 

這應該是foo && foo[:bar]的簡寫,故名。

順便說一句,它也適用於方法。假設foo可以有一個方法quux,您可以使用

foo.andand.quux 
相關問題