Flatten Scala Try

后端 未结 7 1022
天命终不由人
天命终不由人 2020-12-14 19:20

Is there a simple way to flatten a collection of try\'s to give either a success of the try values, or just the failure? For example:

def map(l:List[Int]) =          


        
7条回答
  •  离开以前
    2020-12-14 20:14

    This is pretty close to minimal for fail-first operation:

    def something[A](xs: Seq[Try[A]]) =
      Try(xs.map(_.get))
    

    (to the point where you shouldn't bother creating a method; just use Try). If you want all the failures, a method is reasonable; I'd use an Either:

    def something[A](xs: Seq[Try[A]]) =
      Try(Right(xs.map(_.get))).
      getOrElse(Left(xs.collect{ case Failure(t) => t }))
    

提交回复
热议问题