2

如果我List[Try[A]]在 Scala 中有一个,那么过滤掉这些Failure(t)值的惯用方法是什么?

一种方法是使用以下方法:

val someList: List[Try[String]] = ...
someList.filter(_.isFailure)

有没有更“惯用”的方式,例如使用flatten?这看起来很简单。

4

1 回答 1

10

如果要获取所有异常,可以这样使用collect

someList.collect{ case Failure(t) => t }
// List[Throwable]

如果您想获得所有成功结果,您可以使用flatMapor collect

someList.flatMap{ _.toOption }
// List[String]

someList.collect{ case Success(s) => s }
于 2015-01-12T08:12:18.237 回答