Ruby

【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
sakai
三重出身の28歳。前職はメーカーで働いていて、プログラミングスクールに通って未経験からWeb業界に転職しました。Railsをメインで使っていて、AWSも少しできます。音楽を聞くこととYoutubeを見るのが好きです。最近はへきトラ劇場にハマってます

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です