我通常会有一些代码如下所示:
return if foo.nil?
bar = foo[:bar] || 0
上面的问题是,如果foo [:bar]不存在,我会收到HTTP 500错误,因为会抛出一个看起来类似的NameError异常:
NameError (undefined local variable or method `foo'..)
什么是更优雅的工作?
答案 0 :(得分:0)
有一个插件可以让你更简单,称为andand
。它会让你做类似的事情:
bar = foo.andand[:bar] || 0
它应该是foo && foo[:bar]
的简写,因此得名。
顺便说一句,它也适用于方法。假设foo
可以使用方法quux
,则可以使用
foo.andand.quux