2012年7月7日土曜日

[Scala] 多重ループ

for文で多重ループ

    for (i<-1 to 2; j<-5 to 6) print(i + "-" + j + " ")
実行結果:
1-5 1-6 2-5 2-6

ふむ。後ろが先に回っている。
拡張For文形式。ついでに if 句をつけてみる。

    val a = Array(1, 2, 3, 4);
    val b = Array(6, 7, 8, 9);
    for (i <- a if i % 2 == 0; j <- b if j % 2 == 0)
      print(i + "-" + j + " ");
実行結果:
2-6 2-8 4-6 4-8


yield句をつけると返り値はどうなるのだろう。

    val a = Array(1, 2, 3, 4);
    val b = Array(6, 7, 8, 9);

    val result : Traversable[String] = 
        for (i <- a if i % 2 == 0; j <- b if j % 2 == 0) yield
          i + "-" + j + " ";
    println(result);
実行結果:
ArraySeq(2-6 , 2-8 , 4-6 , 4-8 )


ふつうにTraversableで受けれた。返り値まで多次元になるわけではないようだ。

0 件のコメント:

コメントを投稿