ループの書き方

単純なループ

ループは以下のように書けます。

object Main extends Application {

  // forループで 0 1 2 3 4 の表示(until)
  for (i <- 0 until 5) {
    print(i + " ")
  }

  // forループで 0 1 2 3 4 の表示(to)
  for (i <- 0 to 4) {
    print(i + " ")
  }

  
  // whileループで 0 1 2 3 4 の表示
  var i = 0;
  while (i < 5) {
    print(i + " ")
    i = i + 1
  }
}

for ループと while ループで5回ループの例で、いずれも0〜4までを表示。
ちなみに、++i や i++ は Scala では使えません。


Java での拡張for文みたいなのも書けます。

object Main extends Application {
  var list = List(0,1,2,3,4)
  for (l <- list) print(l + " ")
}


foreachを使うと以下

object Main extends Application {
  var list = List(0,1,2,3,4)
  list.foreach(l => print(l + " "))
}

foreachメソッドに匿名関数としてprintのコードを渡しています。

ちなみに、匿名関数が一つのメソッドから成り、一つの引数を取る場合、明示的な名前と引数の指定は省略できます。

object Main extends Application {
  var list = List(0,1,2,3,4)
  list.foreach(println)
}


関数型っぽい例

object Main extends Application {
  // 奇数を表示 1
  for(n <- List(1,2,3,4,5) if n % 2 == 1) yield print(n + " ")
  
  // 上と同じ
  List(1,2,3,4,5).filter(n => n % 2 == 1).map(n => print(n + " "))
}

最初の例では、ループを使っていますが、下の例では、ループが filter や map などの関数呼び出しに置き換わっています。