簡単にですが、ループでよく使われるnext、break、returnについてまとめていきたいと思います。これらの違いを文章で説明すると下記です。
- next 以降は実行せず、次のループを開始
- break ループを抜ける
- return メソッドを抜ける
では、それぞれ具体例を交えながら見ていきます。
next
nextは以降は実行せずに、次のループを開始します。
def block_next
10.times do |n|
next if (n + 1).even?
puts "hello! #{n + 1}回目"
end
puts "完了!"
end
block_next
これを実行すると以下のようになり、偶数のときには次の処理に行かず、次のループへ移っていることが分かります。
hello! 1回目
hello! 3回目
hello! 5回目
hello! 7回目
hello! 9回目
完了!
break
breakはループを抜けるという挙動になります。
def block_break
10.times do |n|
break if (n + 1).even?
puts "hello! #{n + 1}回目"
end
puts "完了!"
end
block_break
これを実行すると以下のようになり、偶数のときにはループを抜けて、次のputs "完了!"
に移っていることが分かります。
hello! 1回目
完了!
return
return はメソッドを抜けるという挙動になります。times や while、 each など繰り返しの途中であってもメソッド自体をから抜けて戻り値を返します。
def block_return
10.times do |n|
return if (n + 1).even?
puts "hello! #{n + 1}回目"
end
puts "完了!"
end
block_return
これを実行すると以下のようになり、偶数のときにはメソッド自体を抜けていることが分かります。
hello! 1回目
もぐくん
かんたんだね!
さいごに
単純ですが、あまり経験がないと混乱するところだと感じたのでまとめてみました。これらの挙動を頭に入れておかないとバグの原因になったりすることもあるかと思うので、気をつけたいと思いました。
ここまで読んでいただきありがとうございました。