如果我在Scala中有List[Try[A]]
,过滤掉Failure(t)
值的惯用方法是什么?
一种方法是使用以下内容:
val someList: List[Try[String]] = ...
someList.filter(_.isFailure)
是否有更“惯用”的方式,例如使用flatten
?这看起来很简单。
答案 0 :(得分:8)
如果您想获得所有例外,可以使用collect
,如下所示:
someList.collect{ case Failure(t) => t }
// List[Throwable]
如果您想获得所有成功结果,可以使用flatMap
或collect
:
someList.flatMap{ _.toOption }
// List[String]
someList.collect{ case Success(s) => s }