Ruby - 最简洁的方法,如果truthy返回一个值,或执行任意代码

Max*_*ace 4 ruby performance idioms idiomatic

我在Ruby中编写了一些东西,给定foo方法调用的值输出,我想:

  • 返回foo如果foo是truthy
  • 如果foo是假的,请记录错误并返回默认值.

最简单的实现方法可能是:

foo = procedure(input)

if foo
  foo
else
  log_error
  default
end
Run Code Online (Sandbox Code Playgroud)

但这种感觉过于冗长,因为foo重复了三次,这种风格非常迫切.

写这个最干净,最惯用的方式是什么?

(表现很重要 - 我们假设foo在绝大多数情况下都是真实的.)

Jör*_*tag 5

依靠Ruby的Perl传统:

foo = procedure(input) and return foo
log_error
default
Run Code Online (Sandbox Code Playgroud)