我编码在Ruby的一些地方,从一个方法调用给定的值foo
输出干净的方法,我想:红宝石 - 如果truthy返回一个值,或执行任意代码
- 返回
foo
如果foo
is truthy - 如果
foo
是伪造的,则记录错误并返回默认值。
实现这个最简单幼稚的方法可能是:
foo = procedure(input)
if foo
foo
else
log_error
default
end
但由于foo
重复三次这种感觉过于冗长,而这种风格是非常必要的。
写这个最干净,最习惯的方法是什么?
(性能matters--我们假设foo
在绝大多数情况下truthy。)
'FOO ||的log_error;默认' - 将评估'foo || log_error;'作为一个语句,'default'作为另一个语句 - 这可能不是你的意图。 –
我没有意识到你可以将Ruby语句组合在一起(带圆括号),但它是完全合理的。 POLA再次夺冠!我想知道它与'begin'..''end'块有什么不同? – mwp