Ren*_*kai 2 scala apache-spark
我试过了
val tryValues : Iterable[Try[Int]] = ...
val successValues = tryValues.filter(_.isSuccess).map(_.get)
Run Code Online (Sandbox Code Playgroud)
但编译器会发出警告,表示map可能会抛出异常 有什么办法没有警告吗?
您希望使用collect模式匹配所有值Success,并丢弃其他任何值.
val successValues: List[Int] = tryValues collect { case Success(x) => x }
Run Code Online (Sandbox Code Playgroud)
collect接受一个PartialFunction作为参数.PartialFunction将映射定义的集合中的任何值,其余值将被丢弃.
例:
scala> val tryValues = List(1, 1, 0, 1, 1).map(x => Try(1 / x))
tryValues: List[scala.util.Try[Int]] = List(Success(1), Success(1), Failure(java.lang.ArithmeticException: / by zero), Success(1), Success(1))
scala> val successValues = tryValues collect { case Success(x) => x }
successValues: List[Int] = List(1, 1, 1, 1)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
234 次 |
| 最近记录: |