加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-16 09:16:28 所属栏目:安全 来源:网络整理
导读:我想在两个列表中分割一个列表[[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} 解决方法 不知道这是真的
我想在两个列表中分割一个列表[[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")

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读