我想在两个列表中分割一个列表[[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")
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。