ブロックから何かを早く返すにはどうすればよいですか?
概要
このようなことをしたい場合:
collection.each do |i|
return nil if i == 3
..many lines of code here..
end
どうすればその効果を得ることができますか?ブロック内のすべてを大きな if ステートメントでラップできることはわかっていますが、できればネストは避けたいと考えています。
残りの要素の反復を停止したくないため、ここでは Break は機能しません。
解決策
ブロック内の次はブロックから戻ります。ブロック内のブレークは、ブロックに渡した関数から戻ります。それぞれの場合、これは、break がループを終了し、next がループの次の反復にジャンプすることを意味します (したがって、名前が付けられます)。次の値とブレーク値を含む値を返すことができます。