4

私はいくつかのアイテムを生成する関数を持っています。私はそれらを使用して繰り返しています

my_function() do |item|
  ... some code here ...
end

イテレータがアイテムを返さないかどうかを確認するクールな方法はありますか? 何かのようなもの:

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

2 に答える 2

5

通常、反復する関数は、反復された列挙型 (配列など) を返します。これを行うと、この戻り値が空かどうかをテストできます。

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

もちろん、ブロックが複数の行にある場合は、次のように書く方が理にかなっているかもしれません:

items = my_function() do |item|
  # …
end
puts "Nothing found!" if items.empty?

反復した列挙型を作成するのが簡単または効率的でない場合は、何かを反復したかどうかを示すブール値を最後に返すように関数を変更するだけです。

于 2013-06-06T13:33:06.903 に答える