使用异常进行批处理的惯用Scala方法是什么

时间:2015-06-11 11:14:54

标签: scala scala-collections idiomatic

如果我有一个List [Try [Int]]代表一个函数的一些结果。

scala> import scala.util._
scala> val result = List[Try[Int]](
      Success(1),
      Failure(new RuntimeException("first exception")),
      Success(2),
      Failure(new RuntimeException("second exception")))

如果我收集成功,我隐藏了例外

scala> result.collect{case Success(x)=>x}
res1: List[Int] = List(1, 2)

我可以进行分区,但结果需要进一步处理

scala> val res2 = result.partition(_.isSuccess)
res2: (List[scala.util.Try[Int]], List[scala.util.Try[Int]]) = (List(Success(1), Success(2)),List(Failure(java.lang.RuntimeException: first exception), Failure(java.lang.RuntimeException: second exception)))

scala> res2._1.collect{case Success(x)=>x}
res6: List[Int] = List(1, 2)

scala> res2._2.collect{case Failure(x)=>x}
res7: List[Throwable] = List(java.lang.RuntimeException: first exception, java.lang.RuntimeException: second exception)

如果我有一个List[Try[Option[Int]]],这会变得更加复杂。

1 个答案:

答案 0 :(得分:0)

如何将<body ng-controller="MainCtrl"> <p>Hello {{name}}!</p> <h2 attributeDirective>Here is my attribute directive</h2> <elementDirective></elementDirective> </body> 转换为List[Try[Int]]

Try[List[Int]]

import scala.util.Try val demo = List(Try(1),Try(2)) Try(demo.map(x => x.get)) 也不复杂。

希望我能提供帮助。