在 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]
如果您想获得所有成功结果,您可以使用 flatMap
或 collect
:
someList.flatMap{ _.toOption }
// List[String]
someList.collect{ case Success(s) => s }
如果我在 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]
如果您想获得所有成功结果,您可以使用 flatMap
或 collect
:
someList.flatMap{ _.toOption }
// List[String]
someList.collect{ case Success(s) => s }