【问题标题】: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]
    

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

    someList.flatMap{ _.toOption }
    // List[String]
    
    someList.collect{ case Success(s) => s }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-07
      • 2017-02-21
      • 1970-01-01
      • 2016-07-02
      • 2018-01-12
      • 1970-01-01
      • 1970-01-01
      • 2018-03-26
      相关资源
      最近更新 更多