transpose をあえてつかわずに書いてみました。
a.scala
scala
1val l1 = List(11, 12, 13)
2val l2 = List(21, 22, 23)
3val l3 = List(31, 32, 34)
4val l4 = List(41, 42, 43)
5
6for ((i, j) <- l1.zip(l2)) printf("%d, %d\n", i, j)
7printf("\n")
8
9for ((i, j, k) <- (l1, l2, l3).zipped) printf("%d, %d, %d\n", i, j, k)
10printf("\n")
11
12// ↓はエラーになる。
13// for ((i, j, k, l) <- (l1, l2, l3, l4).zipped) printf("%d, %d, %d, %d\n", i, j, k, l)
14
15// そこで、4 つのリストを zip するメソットを作って処理する。
16var zipped4 = l1.zip(l2).zip(l3).zip(l4).map { case (((a, b), c), d) => (a, b, c, d) }
17for ((i, j, k, l) <- zipped4) printf("%d, %d, %d, %d\n", i, j, k, l)
実行結果
$ scala a.scala
11, 21
12, 22
13, 23
11, 21, 31
12, 22, 32
13, 23, 34
11, 21, 31, 41
12, 22, 32, 42
13, 23, 34, 43
参考情報
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/06/14 23:20