scala – 如何拆分列表[[A,B]]

我想在两个列表中分割一个列表[[A,B]].

有没有更好的办法 ?

def lefts[A,B](eithers : List[Either[A,B]]) : List[A] = eithers.collect { case Left(l) => l}
def rights[A,B]]) : List[B] = eithers.collect { case Right(r) => r}

解决方法

不知道这是真的很整洁,但是:

scala> def splitEitherList[A,B](el: List[Either[A,B]]) = {
         val (lefts,rights) = el.partition(_.isLeft)
         (lefts.map(_.left.get),rights.map(_.right.get))
       }
splitEitherList: [A,B]])(List[A],List[B])

scala> val el : List[Either[Int,String]] = List(Left(1),Right("Success"),Left(42))
el: List[Either[Int,Right(Success),Left(42))

scala> val (leftValues,rightValues) = splitEitherList(el)
leftValues: List[Int] = List(1,42)
rightValues: List[String] = List("Success")

相关文章

共收录Twitter的14款开源软件,第1页Twitter的Emoji表情 Tw...
Java和Scala中关于==的区别Java:==比较两个变量本身的值,即...
本篇内容主要讲解“Scala怎么使用”,感兴趣的朋友不妨来看看...
这篇文章主要介绍“Scala是一种什么语言”,在日常操作中,相...
这篇文章主要介绍“Scala Trait怎么使用”,在日常操作中,相...
这篇文章主要介绍“Scala类型检查与模式匹配怎么使用”,在日...