Scalaのfor文

for (i <- 0 until 5)にすれば、0~4まで繰り返します。

for (i <- 0 to 5) {
  println(i)
}
0
1
2
3
4
5

コレクションの処理

コレクションの各要素を順番に処理できます。
なお1つの式しか持たない場合、{}を省略できます。

scala> for (i <- List(1,2,3)) println(i)
1
2
3

複数のループ

scala> for (i <- 1 to 3; j <- 4 to 6) println(i, j)
(1,4)
(1,5)
(1,6)
(2,4)
(2,5)
(2,6)
(3,4)
(3,5)
(3,6)

フィルター

条件を満たす場合のみ、処理を実行します。

scala> for (i <- 1 to 3; j <- 4 to 6; if j % 2 == 0) println(i, j)
(1,4)
(1,6)
(2,4)
(2,6)
(3,4)
(3,6)

yield

通常、for式の戻り値はUnitですが、yieldで戻り値を指定できます。
これを利用し、新しいコレクションを作成できます。 どんなクラスが返されるかは、ジェネレータによって異なります。

scala> for (e <- List(1,2,3,4,5)) yield e + 10
res3: List[Int] = List(11, 12, 13, 14, 15)