【问题标题】:Idiomatic way of filtering Failure(t) instances in Scala在 Scala 中过滤 Failure(t) 实例的惯用方法
【发布时间】:2015-03-09 23:04:30
【问题描述】:
如果我在 Scala 中有一个 List[Try[A]],那么过滤掉 Failure(t) 值的惯用方法是什么?
一种方法是使用以下方法:
val someList: List[Try[String]] = ...
someList.filter(_.isFailure)
是否有更“惯用”的方式,例如使用flatten?这看起来很简单。
【问题讨论】:
标签:
scala
exception-handling
monads
scala-2.11
【解决方案1】:
如果您想获取所有异常,您可以像这样使用collect:
someList.collect{ case Failure(t) => t }
// List[Throwable]
如果您想获得所有成功结果,可以使用flatMap 或collect:
someList.flatMap{ _.toOption }
// List[String]
someList.collect{ case Success(s) => s }