やたらと高性能な Scala の for 文

うなの日記 - for文を使った配列の操作


1.全ての要素に対して処理を行う(foreach)

val ls = List(0, 1, 2)

for (i <- ls)
  println(i)
0
1
2


2.条件抽出(filter)

val ls = List(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)

for (i <- ls if i % 2 == 0)
  println(i)
0
2
4
6
8


3.全要素に操作を行ったリストの取得(map)

val ls = List(0, 1, 2)

val mapped = for (i <- ls) yield { i + 1 }

mapped.foreach(println)
1
2
3


4.ネストしたfor文

val ls1 = List(0, 1, 2)
val ls2 = List(3, 4, 5)

for (i <- ls1; j <- ls2)
  println(i, j)

// これと同じ
// for (i <- ls1) {
//   for (j <- ls2) {
//     println(i, j)
//   }
// }
(0,3)
(0,4)
(0,5)
(1,3)
(1,4)
(1,5)
(2,3)
(2,4)
(2,5)


ちなみに、break / continue はありません