その他

【Ruby】next、break、returnのちがい

簡単にですが、ループでよく使われる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回目

もぐくん
もぐくん
かんたんだね!

さいごに

単純ですが、あまり経験がないと混乱するところだと感じたのでまとめてみました。これらの挙動を頭に入れておかないとバグの原因になったりすることもあるかと思うので、気をつけたいと思いました。
ここまで読んでいただきありがとうございました。

ABOUT ME
酒井 駿
名古屋工業大学大学院卒業後、豊田合成(株)で品質管理を経験し、その後スタートアップ・マネーフォワードを経て、2024年11月に株式会社EGGHEAD創業。 製造業とエンジニアリング、両方の現場の知見を活かし、製造業における生成AIを活用した業務改善やシステム開発を支援します。