質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Scala

ScalaはJava仮想マシンで動作を行うオブジェクト指向型プログラミング言語の1つです。静的型付けの関数型言語で、コンパイルエラーの検出に強みがあります。

Q&A

解決済

3回答

1875閲覧

4つ以上のListをまとめてforで回したい

退会済みユーザー

退会済みユーザー

総合スコア0

Scala

ScalaはJava仮想マシンで動作を行うオブジェクト指向型プログラミング言語の1つです。静的型付けの関数型言語で、コンパイルエラーの検出に強みがあります。

0グッド

0クリップ

投稿2016/06/14 21:12

###前提・実現したいこと
4つ以上のリストを同時にforで回したいのですが
記述方法がわかりません どうすればよいのでしょか?

###発生している問題

val l1 = List(1,2,3) val l2 = List(2,3,4) val l3 = List(3,4,5) val l4 = List(4,5,6) for ((i, j, k, l) <- (l1, l2, l3, l4).zipped) yield (a, b, c, d)

###エラーメッセージ

$ error: value zipped is not a member of (List[Int], List[Int], List[Int], List[Int])

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

次のような形ではどうでしょうか?Listが全て同じ長さでないとうまくいきませんが。

Scala

1for (List(i, j, k, l) <- List(l1, l2, l3, l4).transpose) yield (i, j, k, l)

投稿2016/06/14 22:10

raccy

総合スコア21733

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/06/14 23:20

回答ありがとうございます スッキリしました
guest

0

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/18 01:04

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/06/18 15:30

回答ありがとうございます
guest

0

zipped というメンバーはありませんと言うエラーです。そこを直してください
l1:::l2:::l3:::l4ではどうですか?

投稿2016/06/14 21:29

Zuishin

総合スコア28656

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/06/14 23:25

回答ありがとうございます リストを連結する方法では個々のリストを同時にfor式で回せなくなります
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問