【问题标题】:convert List[Tuple2[A,B]] to Tuple2[Seq[A],Seq[B]]将 List[Tuple2[A,B]] 转换为 Tuple2[Seq[A],Seq[B]]
【发布时间】:2012-10-11 23:59:30
【问题描述】:

卡在这里,试图将案例类元组列表转换为序列元组并多重分配结果。

val items = repo.foo.list // gives me a List[(A,B)]

我可以像这样完成多项任务:

val(a,b) = (items.map(_._1).toSeq, items.map(_._2).toSeq)

但最好在 1 步中完成,如下所示:

val(a,b) = repo.foo.list.map{case(a,b) => (a,b)}

【问题讨论】:

    标签: list scala transform tuples seq


    【解决方案1】:

    我不确定我是否正确理解了这个问题。也许unzip 可以满足您的需求?

    这里是一些示例的链接:http://daily-scala.blogspot.de/2010/03/unzip.html

    【讨论】:

    • +1 是的,一直忘记那个 ;-) 现在,如何在 1 次操作中全部转换为 Seq(请参阅更新的问题)
    • 是的,正在询问转换为 Seq(解压缩给我一个列表)。不过没关系,对于需要 Seq 的方法,编译器似乎默默地将 List 转换为 Seq
    • 除了简单继承之外,没有静默转换,因为 List 扩展了 Seq(间接通过 LinearSeq)。
    • @KristianDomagala 对,convert 不是正确的词,也许看起来会更清楚
    【解决方案2】:

    对于更一般的情况,您可以查看product-collectionsCollSeqN 既是 Seq[TupleN[A1..An]] 又是 TupleN[Seq[A1..An]]

    在您的示例中,您可以像这样提取 Seq:

    items._1
    items._2
    ...
    

    【讨论】:

      猜你喜欢
      • 2020-07-16
      • 1970-01-01
      • 2011-11-06
      • 2021-01-30
      • 1970-01-01
      • 1970-01-01
      • 2014-08-25
      • 2019-10-23
      • 2019-09-23
      相关资源
      最近更新 更多