gpt4 book ai didi

scala 模式匹配 (Try,Try)

转载 作者:行者123 更新时间:2023-12-03 04:49:37 30 4
gpt4 key购买 nike

我有以下元组 - (t1,t2) :(Try,Try)

我想检查两者是否成功或其中之一是否失败,但避免代码重复。像这样的东西:

(t1,t2) match {
case (Success(v1),Success(v2)) => new MyClass(v1,v2)
case (Failure(e),_) | (_,Failure(e)) => println(e.getMessage)
}

当然,第二条语句不起作用,因为我需要提供不同的提取变量。但随后我必须检查它们,因为我不知道哪个失败并且实际上包含 Throwable。我希望 Try 能像 Future 一样,所以它会有 Try.sequence(t1,t2)。

知道如何优雅地完成这项工作吗?

最佳答案

您可以将其转换为 Try[MyClass],如下所示:

val myclass = for {
v1 <- t1
v2 <- t2
} yield new MyClass(v1, v2)

如果t1失败,或者t1t2都失败,myclass将是失败t1Exception。如果只有 t2 失败,则 myclass 将成为 Failure,并出现 t2Exception 。否则,myclass 将是成功。然后您可以使用 recover 或其他方式正常处理它。

关于scala 模式匹配 (Try,Try),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42610337/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com