scalaで以下の処理をするにはどうしたらよいかわかりません。
plain
1val x: Seq[(Int, Seq[String])] = [ 2(1, ["hoge1", "fuga1", "piyo1"]), 3(2, ["hoge2", "fuga2", "piyo2"]), 4(3, ["hoge3", "fuga3"]) 5] 6val y: Seq[Int] // > y = [1, 2, 3] となるようにしたい
plain
1val y: Seq[String] // > y = ["1 - hoge1", 2 "1 - fuga1", 3 "1 - piyo1", 4 "2 - hoge2", 5 "2 - fuga2", 6 "2 - piyo2", 7 "3 - hoge3", 8 "3 - fuga3" 9] 10// タプルの2番目の要素数の合計数を持つリストを生成したい(今の場合、3 + 3 + 2 = 8 個の要素数を持つ)
べた書きにすると
plain
1scala> val y: Seq[String] = List(s"${x(0)._1} - ${x(0)._2(0)}", 2 s"${x(0)._1} - ${x(0)._2(1)}", 3 s"${x(0)._1} - ${x(0)._2(2)}", 4 s"${x(1)._1} - ${x(1)._2(0)}", 5 s"${x(1)._1} - ${x(1)._2(1)}", 6 s"${x(1)._1} - ${x(1)._2(2)}", 7 s"${x(2)._1} - ${x(2)._2(0)}", 8 s"${x(2)._1} - ${x(2)._2(1)}")
実行結果
plain
1y: Seq[String] = List(1 - hoge1, 1 - fuga1, 1 - piyo1, 2 - hoge2, 2 - fuga2, 2 - piyo2, 3 - hoge3, 3 - fuga3)
なのですが、mapやリスト操作に慣れていないので効率よい書き方がわかりません
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。