1. ホーム
  2. ruby

[解決済み] ブロックから何かを早く戻すにはどうしたらいいですか?

2023-01-07 22:44:53

質問

このようなことをしたい場合

collection.each do |i|
   return nil if i == 3

   ..many lines of code here..
end

どのようにしてこの効果を得ることができるでしょうか?ブロック内のすべてを大きなif文で包むことができるのは知っていますが、可能であれば入れ子を避けたいと思います。

ここでブレークが機能しないのは ではなく は、残りの要素の反復を停止したいからです。

どのように解決するのですか?

next ブロックの中で、ブロックから戻る。 break はブロックの中で、そのブロックに降伏した関数を返します。例えば each の場合、これは break はループを終了し next はループの次の繰り返しにジャンプします(このように名前がついています)。値を返すには next valuebreak value .