Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

List[Try[T]] to Try[List[T]] in Scala

I would like to know how to convert a List[Try[T]] into Try[List[T]] in Scala?

I have tried using an accumulator and folding right but it doesn't seem ideal.

like image 356
Valahu Avatar asked Nov 30 '22 21:11

Valahu


2 Answers

Using cats it's as easy as:

import cats._
import cats.data._
import cats.implicits._
import scala.util.{Try, Success, Failure}

val tries: List[Try[Int]] = List(Success(1), Success(2), Success(3))
tries.sequence

More information in the Traverse docs.

like image 52
Karl Bielefeldt Avatar answered Dec 02 '22 10:12

Karl Bielefeldt


Try(list.map(_.get))

This will return only the first failure, so you need something more complicated if you want to catch all the failures in the list.

like image 33
Tim Avatar answered Dec 02 '22 10:12

Tim



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!