私がこのようなことをしたい場合:
collection.each do |i|
return nil if i == 3
..many lines of code here..
end
どうすればその効果を得ることができますか?ブロック内のすべてを大きなifステートメントでラップできることはわかっていますが、可能であればネストは避けたいと思います。
残りの要素の反復を停止したくないので、ここではブレークは機能しません。
回答:
next
ブロック内はブロックから戻ります。break
ブロック内は、ブロックに譲った関数から戻ります。each
この手段break
のループを終了し、next
ループ(したがって名前)の次の繰り返しにジャンプします。next value
とで値を返すことができますbreak value
。
break value
うまくいきましたが、私にnext value
はうまくいきませんでした。どうもありがとう。
next
でbreak
あり、ループ構造に固有のものではないため、リンクした記事は非常に誤解を招く可能性があります(反対のことを強く示唆しているため)。そして、私の説明は間違いなくときに正しいですnext
し、break
ブロック内で使用されている(なおwhile
やfor
、これまでの用途の99%ので、Rubyで使用した場合、まれにしかありませんnext
し、break
ブロック内にあります)。
この場合、breakを使用してループを早期に終了できます。
collection.each do |i|
break if i == 3
...many lines
end
...もちろん、これは、実際に値を返すことを目的としておらず、ブロックから抜け出すことを前提としています。
break
Rubyで-break 5
原因となりますeach
。5.を返すために
next value
およびの+1break value
。まさに私が探していたもの。