我有一个函数,它产生的项目很少。我正在使用它们迭代它们
my_function() do |item|
... some code here ...
end
有没有一种很酷的方法来检查迭代器是否不返回任何项目?就像是:
my_function() do |item|
... some code here ...
else
puts "No items found"
end
我有一个函数,它产生的项目很少。我正在使用它们迭代它们
my_function() do |item|
... some code here ...
end
有没有一种很酷的方法来检查迭代器是否不返回任何项目?就像是:
my_function() do |item|
... some code here ...
else
puts "No items found"
end
通常迭代的函数返回被迭代的可枚举(例如数组)。如果你这样做,你可以测试这个返回值是否为空:
if my_function(){ |item| … }.empty?
puts "nothing found!"
end
当然,如果您的块位于多行上,则将其写为:
items = my_function() do |item|
# …
end
puts "Nothing found!" if items.empty?
如果您创建迭代的可枚举对象并不容易或效率不高,那么您只需修改函数以在末尾返回一个布尔值,指示您是否迭代了任何内容。
您可以将迭代的返回值分配给一个变量,然后将其与任何内容进行比较。
result = myfunction() do |item|
# some code here ...
end
if result.empty?
puts "Something"
end