Rubyでcontinue相当の機能はnext!繰り返しの制御を覚えよう
  • facebookページ
  • twitterページ
  • 2020.12.18

    Rubyでcontinue相当の機能はnext!繰り返しの制御を覚えよう

    Rubyで forwhileでループ処理などを行なっているとき、条件によって途中でループ処理を抜ける時や、特定の条件では処理をスキップして、次のループ処理を行いたいことがあります。

    この記事では、Rubyのループ処理に関する制御構文(break,next,redo)について解説します。

    break,next,redoは制御構造

    冒頭の通り、Rubyでループ処理の流れを制御するときは、 break, next, redoの3つの制御構造を、用途に合わせて使用します。

    breakは途中でループ処理を抜ける時、 nextは処理をスキップして次のループを行う時、 redoはループ処理をやり直したい時に使用する制御構造です。

    continue相当の機能はnext

    Rubyでは、ループ処理をスキップするときは nextを使用します。

    もし、Javaなどの言語からRubyを学んでいる場合は、 continueに相当するものは、Rubyでは nextだと覚えておきましょう。

    nextの使い方

    最初は「next」制御構造について解説します。

    ループ(繰り返し)処理の中で nextが呼ばれると、その時点で処理をスキップして次のループを行います。

    配列の値や、特定の数値の時だけ処理をスキップする時などに使用します。

    次のサンプルコードは、変数 numが奇数の時だけ処理を行い、奇数の時は nextで処理をスキップする例です。

    nextと条件(if)を合わせて1行で書く

    上のサンプルコードでは、 if文と nextを別々の行に記述しているが、 break if 条件式のように1行でまとめて書くこともできます。

    if文と nextを1行にまとめて記述すると、次のようにシンプルにコードが記述できます。

    breakの使い方

    次に「break」制御構造について解説します。

    ループ処理の中で breakが呼ばれると、そこでループが終了し whileforなどのブロックから処理が抜け出します。

    基本的には、ある条件に達した時にループを途中で抜ける用途などで breakは使用します。

    次のサンプルコードは、変数 countを1ずつ加算し、5を超えた時点で breakを実行し、ループ(while)を抜けるコードです。

    breakと条件を合わせて1行で書く

    上のサンプルコードでは、 if文と breakを別々に記述していましたが、 break if 条件式のように1行でまとめて書くこともできます。

    実際に、 if文と breakを1行にまとめたコードは次の通りです。

    入れ子になったループの break

    ループ処理が入れ子になった場合、 breakによって抜けるのは、もっとも内側のループです。

    実際にサンプルコードで試してみましょう。

    入れ子になった内側のループで、 break if j == 3の条件の時にループを抜けていますが、外側のループからは抜けていないため、再度、繰り返し処理が実行されています。

    もし、入れ子になった内側のループを breakで抜ける際に、合わせて外側のループも抜けるようにする場合は、次のコードのようにする必要があります。

    redoの使い方

    最後に「redo」制御構造について解説します。

    redoは、その時点で処理を中断し、繰り返し処理をも一度やり直したい時に使用します。

    利用シーンがあまりなく、開発現場でも使用されることがない制御構造ですが、いざという時に知っておくと便利なので、使い方だけは覚えておきましょう。

    では、次のサンプルコードをご覧ください。
    こちらは、変数 countが偶数の時は redOでもう一度ループ処理をやり直す処理となっています。

    countが偶数の時に redoを実行することにより、2回同じループカウントで処理が実行されているのが分かります。

    next制御構造と動きは似ていますが、 next制御構造は次のカウンタやイテレーターで処理を行うのに対し、redo`はループのカウントやイテレーターは次に進めず、ループ処理をやり直します。

    まとめ

    Rubyの break, next, redo制御構造を使って、ループ処理を制御する方法を解説してきました。

    breaknext使ってループ処理を中断・やり直しすることは多々あるため、使い方について是非覚えておきましょう。

    この記事のまとめ

    breakはループ処理を抜ける時に使用する
    nextは処理をスキップして次のループを行う時に使用する
    redoはループ処理をやり直したい時に使用する

    【関連記事】
    【Rubyの基礎】any?メソッドの使い方



    優良フリーランス案件多数掲載中!
    フリーランスエンジニアの案件をお探しなら
    ポテパンフリーランス

    この記事をシェア

    • Facebookシェア
    • Twitterシェア
    • Hatenaシェア
    • Lineシェア
    pickup









    ABOUT US

    ポテパンはエンジニアと企業の最適なマッチングを追求する企業です。

    READ MORE