Ruby:如果为真或则获取值

标签 ruby

我可以像这样使用三元运算符:

a.empty? ? a : b

如果 a 只是一个短变量,这就可以了。如果我不想使用变量,但是,例如,我在一个复杂的数组函数链中,其中我没有临时变量,如何在不必重复链的情况下做到这一点?在我看来,这似乎只适用于我可以使用

的 nil 值
a.filter { bla bla bla }.map { bla bla bla }.reduce { bla bla } || b

但对于任何其他类型的检查如何执行此操作?

a.filter { bla bla bla }.map { bla bla bla }.reduce { bla bla }.empty? ? a.filter { bla bla bla }.map { bla bla bla }.reduce { bla bla } : b

最佳答案

这个问题被反复问过:

a
.filter{bla bla bla}
.map{bla bla bla}
.reduce{bla bla}
.tap{|a| break a.empty? ? a : b}

或者,或者(不推荐):

a
.filter{bla bla bla}
.map{bla bla bla}
.reduce{bla bla}
.instance_eval{empty? ? self : b}

关于Ruby:如果为真或则获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15097201/

相关文章:

ruby - 使用 RSpec 的非 Rails 项目的首选目录结构是什么?

ruby - DataMapper导入主键

sql - 如何使用自定义加入 rails 来加载对象?

ruby - 为什么 self.class === MyClass 返回 false,而 self.class == MyClass 返回 true?

ruby - gems/anemone-0.7.2/lib/anemone/storage.rb:28:in `MongoDB' : 未初始化的常量 Mongo::Connection (NameError)

ruby Restclient超时无法正常工作,它在定义的超时加倍后抛出异常

ruby - 我怎样才能使这个庞大的 Ruby if/elsif 语句更紧凑、更简洁?

ruby-on-rails - Heroku Repo Size 和 Slug Size 会随着每次部署而增加。为什么?

html - Rails 助手 : Add a line break to the end of a content_tag within helper method

ruby-on-rails - 未定义的方法 `get?' 为 302 :Integer