相关疑难解决方法(0)

如何将 Seq[Try] 转换为 Try[Seq]

有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并返回“复合”失败。

对于“复合”故障还有解决方案吗?

scala

2
推荐指数
2
解决办法
2232
查看次数

验证集合中的元素,返回第一个无效元素的失败

如果我有一些验证功能:

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
推荐指数
1
解决办法
86
查看次数

标签 统计

scala ×2