ruby - Ruby 中优雅的循环 Elsing

标签 ruby loops

我必须编写一个 Ruby 方法:

  1. 遍历数组,如果其中一个元素符合特定条件则执行 Foo。

  2. 如果没有数组元素符合条件,则执行 Bar 操作。

在任何其他语言中,我会在进入循环之前设置一个 bool 变量,并在执行 Foo 时切换它。该变量的值会告诉我是否需要 Bar。但这感觉不像 Rubyish 那样不优雅。谁能提出更好的方法?

编辑 一些非常好的答案,但由于我本应提及的细节,它们不太有效。 Foo 所做的事情是对符合条件的数组元素完成的。此外,保证最多有一个元素匹配条件。

最佳答案

是否有任何项目匹配?如果是,则做一些不涉及匹配项目的事情。

if items.any? { |item| item.totally_awesome? }
  foo "we're totally awesome!"
else
  bar "not awesome :("
end

抓取第一个匹配项。如果它存在,则使用匹配项做一些事情。

awesome_item = items.find { |item| item.totally_awesome? }
if awesome_item
  foo "#{awesome_item.name} is totally awesome!"
else
  bar "no items are awesome :("
end

抓取所有匹配项。如果数组中有任何内容,则对所有匹配项执行操作。

awesome_items = items.find_all { |item| item.totally_awesome? }
if awesome_items.any?
  foo "#{awesome_items.size} totally awesome items!"
else
  bar "no items are awesome :("
end

关于ruby - Ruby 中优雅的循环 Elsing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14514233/

相关文章:

c# - 如何从 base 000001 到 999999 或 LEFT padding 生成序列号?

ruby - Yum 看不到 Ruby 已安装

ruby-on-rails - 即使设置了错误,Rails Record 也会被保存

c - C语言中获取2到100之间的所有素数

javascript - 帮助将数组循环到现有 div 中

bash - 在继续之前在循环函数中下载两个配对文件

ruby-on-rails - 显示 i18n 的 Rails t 函数

ruby-on-rails - Rails rspec 问题(无法加载此类文件 --b (LoadError))

ruby - 是否可以使用 Bundler 安装 gem,并告诉它对特定 gem 使用特定编译器?

json - 如何在 Haxe 中迭代动态对象