是否有一种在Scala中执行以下映射的简明方法?
val listOfTuples: List[Tuple2[Foo, Bar]] = ???
val (foos, bars) = listOfTuples // foo:List[Foo], bar:List[Bar]
我看到map
List[Tuple[X, X]]
List[List[X]]
到transpose
然后{{1}}列表,尽管这只适用于由齐次类型参数组成的元组
答案 0 :(得分:9)
你应该使用这样的方法unzip
:
val (foos, bars) = listOfTuples.unzip
还有unzip3
的集合方法Tuple3
。
答案 1 :(得分:0)
如果对于arity 3到22你可以用product-collections执行此操作:
val foos = listOfTuples._1
val bars = listOfTuples._2