Ruby - 如果为真则返回值或执行任意代码的最简洁方法

标签 ruby performance idioms

我正在用 Ruby 编写一些代码,给定一个方法调用输出的值 foo,我想:

  • 如果 foo 为真则返回 foo
  • 如果 foo 为假,则记录错误并返回默认值。

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

foo = procedure(input)

if foo
  foo
else
  log_error
  default
end

但这感觉过于冗长,因为 foo 重复了 3 次,而且这种风格非常命令式。

什么是最简洁、最惯用的写法?

(性能很重要——让我们假设 foo 在绝大多数情况下都是真实的。)

最佳答案

继承了 Ruby 的 Perl 传统:

foo = procedure(input) and return foo
log_error
default

关于Ruby - 如果为真则返回值或执行任意代码的最简洁方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33369890/

相关文章:

ruby-on-rails - 使用 Soulmate 和 Redis 进行自动完成时未定义的方法 `downcase'

SOAP 与 XML-RPC 或 REST 的性能比较

parameters - 重新分配参数绑定(bind)的惯用方法是什么?

clojure - 这个简单逻辑的惯用 Clojure 是什么?

javascript - V8 是否检测 int 变量并更有效地处理它们?

assembly - x86 汇编语言

ruby - 在 ruby​​ 中使用单引号与双引号相比有性能提升吗?

json - 如何在 Ruby 中创建 JSON 对象

ruby-on-rails - rails : Undefined method `truncate' in model

python - 加速numpy中的数组分析