Ruby:未定义的局部变量或方法

时间:2010-09-11 23:41:03

标签: ruby-on-rails ruby

我通常会有一些代码如下所示:

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

上面的问题是,如果foo [:bar]不存在,我会收到HTTP 500错误,因为会抛出一个看起来类似的NameError异常:

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

什么是更优雅的工作?

1 个答案:

答案 0 :(得分:0)

有一个插件可以让你更简单,称为andand。它会让你做类似的事情:

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

它应该是foo && foo[:bar]的简写,因此得名。

顺便说一句,它也适用于方法。假设foo可以使用方法quux,则可以使用

foo.andand.quux