有Futures一种简单的方法可以转换Seq[Future]为Future[Seq]:
Future.sequence(seqOfFutures)
我找不到与 . 类似的东西Try。
它适用于foldLeft但我真正喜欢的会有类似的东西Try.sequence(seqOfTry)。
不提供这样的功能有什么原因吗?
如何正确完成此操作?
语义:
成功的价值观列表:Success(Seq(1,2,3,4))
失败有两种可能:
拳头失败Failure并返回。这是通过这个问题处理的:listtryt-to-trylistt-in-scala
收集所有内容Failures并返回“复合”失败。
对于“复合”故障还有解决方案吗?
如果我有一些验证功能:
def validateOne(a: A): Try[A]
Run Code Online (Sandbox Code Playgroud)
我现在想通过使用该validateOne函数来验证 A 的集合
def validateAll(all: List[A]): Try[List[A]]
Run Code Online (Sandbox Code Playgroud)
Failure一旦发现第一个元素无效,是否有一种很好的方法来返回 a ?
我现在这样做的方法是get在验证每个元素后调用。对于validateOne返回的第一个元素Failure,get抛出包装异常......我捕捉到重新包装:
def validateAll(all: List[A]): Try[List[A]] = try {
all.map(a => validateOne(a).get)
} catch {
case e: MyValidationException => Failure(e)
}
Run Code Online (Sandbox Code Playgroud) scala ×2