単純なループ
ループは以下のように書けます。
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 などの関数呼び出しに置き換わっています。