在Scala中将List [Try [T]]尝试为[List [T]]

Val*_*ahu 3 functional-programming scala scalaz scala-cats

我想知道如何在Scala中将List [Try [T]]转换为Try [List [T]]?

我已经尝试过使用累加器并向右折叠,但这似乎并不理想。

Kar*_*ldt 7

使用猫就像这样简单:

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
Run Code Online (Sandbox Code Playgroud)

有关Traverse文档的更多信息。


Tim*_*Tim 5

Try(list.map(_.get))
Run Code Online (Sandbox Code Playgroud)

这将仅返回第一个失败,因此,如果要捕获列表中的所有失败,则需要更复杂的操作。