How to split a List[Either[A, B]]

前端 未结 8 1152
南笙
南笙 2020-12-10 11:01

I want to split a List[Either[A, B]] in two lists.

Is there a better way ?

def lefts[A, B](eithers : List[Either[A, B]]) : List[A] = eit         


        
8条回答
  •  心在旅途
    2020-12-10 11:23

    A somewhat functional solution for Seq.

    def partition[A, B](seq: Seq[Either[A, B]]): (Seq[A], Seq[B]) = {
      seq.foldLeft[(Seq[A], Seq[B])]((Nil, Nil)) { case ((ls, rs), next) =>
        next match {
          case Left(l) => (ls :+ l, rs)
          case Right(r) => (ls, rs :+ r)
        }
      }
    }
    

提交回复
热议问题