循环迭代 - 检查是否没有产生任何项目

时间:2013-06-06 13:29:02

标签: ruby

我有一个函数,它产生很少的项目。我正在使用

迭代它们
my_function() do |item|
  ... some code here ...
end

有没有一种很酷的方法来检查迭代器是否没有返回任何项目?类似的东西:

my_function() do |item|
  ... some code here ...
else
  puts "No items found"
end

2 个答案:

答案 0 :(得分:5)

通常迭代的函数返回迭代的可枚举(例如数组)。如果这样做,您可以测试此返回值是否为空:

if my_function(){ |item| … }.empty?
  puts "nothing found!"
end

当然,如果您的块在多行上,将其写为:

可能更有意义
items = my_function() do |item|
  # …
end
puts "Nothing found!" if items.empty?

如果你创建一个迭代的枚举并不容易或有效,那么你只需要修改你的函数以在结尾处返回一个布尔值,指示你是否迭代了任何东西。

答案 1 :(得分:2)

您可以将迭代的返回值分配给变量,然后将其与任何内容进行比较。

result = myfunction() do |item|
  # some code here ...
end
if result.empty?
  puts "Something"
end