English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Scalaのbreakステートメント

Scala のループ

Scalaではデフォルトでbreakステートメントはありませんが、Scala 2.8 バージョン後は別の方法で実現できます break ステートメント。ループ内で使用するとき break このステートメントが実行されると、ループを中断し、ループの後のコードブロックを実行します。

構文

Scalaのbreakの構文は少し異なります。以下のようになります:

// 以下のパッケージをインポート
import scala.util.control._
// Breaksオブジェクトの作成
val loop = new Breaks;
// breakable内でループ
loop.breakable{
    // ループ
    for(...){
       ....
       // ループの中断
       loop.break;
   }
}

フローチャート

オンラインサンプル

import scala.util.control._
object Test {
   def main(args: Array[String]) {
      var a = 0;
      val numList = List(1,2,3,4,5,6,7,8,9,10);
      val loop = new Breaks;
      loop.breakable {
         for( a <- numList){
            println( "aの値: " + a );
            if( a == 4 {
               loop.break;
            }
         }
      }
      println( "ループの後" );
   }
}

以下のコードを実行すると、出力結果が:

$ scalac Test.scala
$ scala Test
aの値: 1
aの値: 2
aの値: 3
aの値: 4
ループの後

ネストされたループの中断

以下の例では、どのようにネストされたループを中断するかを示します:

import scala.util.control._
object Test {
   def main(args: Array[String]) {
      var a = 0;
      var b = 0;
      val numList1 = List(1,2,3,4,5);
      val numList2 = List(11,12,13);
      val outer = new Breaks;
      val inner = new Breaks;
      outer.breakable {
         for( a <- numList1{
            println( "aの値: " + a );
            inner.breakable {
               for( b <- numList2{
                  println( "bの値: " + b );
                  if( b == 12 {
                     inner.break;
                  }
               }
            } // 内部ループの中断
         }
      } // 外部ループの中断
   }
}

以下のコードを実行すると、出力結果が:

$ scalac Test.scala
$ scala Test
aの値: 1
bの値: 11
bの値: 12
aの値: 2
bの値: 11
bの値: 12
aの値: 3
bの値: 11
bの値: 12
aの値: 4
bの値: 11
bの値: 12
aの値: 5
bの値: 11
bの値: 12

Scala のループ