foo(:bar)if foo(:bar)!= 0 rails-way?

时间:2015-08-26 20:34:17

标签: ruby-on-rails ruby if-statement

我有这个条件:

foo(:bar) if foo(:bar) != 0

我问自己是否有更好的" rails- / ruby​​-way"表达这种情况? (没有两次调用foo(:bar)?)

3 个答案:

答案 0 :(得分:2)

你的例子是一种非常正常的做法。正如@ndn所说,如果你的方法foo不是高性能或非常冗长,你可以分配给一个变量,结果不方便调用两次。

compilation symbol

答案 1 :(得分:1)

[foo(:bar)].find{ |x| x.nonzero? }

当然,在一般情况下,您可以使用您希望的任何其他谓词而不是x.nonzero?

在问题中给出的情况下,您可以写得更简单

[foo(:baz)].find(&:nonzero?)

答案 2 :(得分:0)

因此,只有当该函数的结果不为0时,您才希望调用函数。这意味着您无论如何都必须调用该函数来检查它的结果,所以只需:

foo(:bar)

这是没有背景的,如果你提供一些使用它的背景,我相信我们可以提供更好的选择。