在 Scala 中过滤 Failure(t) 实例的惯用方式

Idiomatic way of filtering Failure(t) instances in Scala

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

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

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

有没有更"idiomatic"的方式,例如使用 flatten?这看起来确实很简单。

如果你想获得所有异常,你可以像这样使用 collect

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

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

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

someList.collect{ case Success(s) => s }