を埋めるために、我々は異なるサイズの次のリストを持っていると仮定しますジップ二つのリスト
val list1 = ("a", "b", "c")
val list2 = ("x", "y")
は今、私はこれらの2つのリストをマージし、連結されている文字列要素で新しいリストを作成したいです:
val desiredResult = ("ax", "by", "c")
私は、here提案として
val wrongResult = (list1, list2).zipped map (_ + _)
を試してみましたzipは長いリストの要素と一致しない要素を破棄するため、これは意図したとおりに機能しません。
どうすればこの問題を解決できますか? 1つのリストが長い場合、リストを圧縮して "デフォルトの要素"(この場合は空の文字列のように)を与える方法はありますか?
私はいつも知らない何かがあると思います。 –
ありがとう!これは、このソリューションで動作します: 'list1.zipAll(list2、" "、" ")map({case(y、x)=> y + x})' "、" ")map(_ + _)'となります。 zipAllで短い構文を使用できないのはなぜですか? – ForceOfWill
@ForceOfWill: '(list1、list2).zipped'は' Tuple2Zipped'を返します。['.map'](http://www.scala-lang.org/api/current/index.html#scala.runtime (El1、El2)=> B)(implicitcbf:scala.collection.generic.CanBuildFrom [Repr1、B、To]):To)は 'f:(El1、 El2)=> B'(すなわち、2つの引数をとる関数)である。 'List [A]'の '.map'は' f:A => B'、つまり1つの引数(この場合は 'Tuple2'です)をとります。残念ながら、これは '_ + _'(2つの引数を取る関数)はここでは適用できないことを意味します。 – Marth