break, next, redoの違い
スポンサーリンク
スポンサーリンク
ライフスタイル関連のコンテンツ
お金 | 仕事 | 勉強 | プライベート | 健康 | 心
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般
お金 | 仕事 | 勉強 | プライベート | 健康 | 心
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般
繰り返しの中で、ループ処理を中断したり、特定の回のループを飛ばしたりする場合は、break, next, redoなどを使います。
スポンサーリンク
break
繰り返しを中断して、ループを抜ける。
next
現在の回を飛ばして、次の回のループに移る。
redo
同じ条件で、ループをやり直す。
breakについては、処理を中断しループ脱出するだけですので、簡単なので理解しやすいです。
Rubyのbreak, nextは、PHPやCで言うところの、break, continueに、またPerlのlast, nextと同じです。
分かりにくいのは、nextとredoの違いです。
nextはループ処理を先頭に戻すのですが、その処理をブロック外の条件評価のところからはじめます。
一方で、redoの場合、次の回が、ブロック内の先頭の部分からはじまりますので、ループ条件評価は行われません。
redoの場合、同じ条件において、ブロック内の繰り返し処理をやり直す、ということになります。
array = ['Ruby', 'Perl', 'PHP', 'Python', 'JavaScript', 'C++', 'Java'] puts "----- break ------" count = 0 array.each{ |item| count += 1 if count == 3 break end print count, " : ", item, "\n" } puts "\n----- next ------" count = 0 array.each{ |item| count += 1 if count == 3 next end print count, " : ", item, "\n" } puts "\n----- redo ------" count = 0 array.each{ |item| count += 1 if count == 3 redo end print count, " : ", item, "\n" }
実行結果。
----- break ------ 1 : Ruby 2 : Perl ----- next ------ 1 : Ruby 2 : Perl 4 : Python 5 : JavaScript 6 : C++ 7 : Java ----- redo ------ 1 : Ruby 2 : Perl 4 : PHP 5 : Python 6 : JavaScript 7 : C++ 8 : Java
nextの場合、「count == 3」の時のループ処理が飛ばされて、配列の値「’PHP’」も飛ばされています。
しかし、redoでは、「count == 3」から1つカウントアップされた後、同じ条件で繰り返し処理をやり直すので、配列の値「’PHP’」が表示されています。
スポンサーリンク
<< 前の記事 : loopメソッド
- - 関連記事 -
- loopメソッド
- eachメソッド
- until文
- while文
- for文・for~in
- timesメソッド・繰り返し回数指定
- while文(繰り返し)
- loop と while true の違い
スポンサーリンク