gpt4 book ai didi

scala - 如何最好地处理Future.filter谓词不满足类型错误

转载 作者:行者123 更新时间:2023-12-04 09:58:40 25 4
gpt4 key购买 nike

我喜欢scala是类型安全的,但是我一直遇到的一个运行时错误是

 Future.filter predicate is not satisfied

我可以看到为什么收到此错误,只是在寻找有关如何最好地解决此错误并优雅地处理该错误的建议,或者我做错了吗?
val r: Future[play.api.mvc.Result] = for {
account <- accountServer.get(...)
if account.isConfirmed
orders <- orderService.get(account, ...)
} yield {
...
}

如果未确认帐户,我将收到上述错误。

我本以为,由于过滤器有可能发生故障,因此scala会将yield return值设为Option。不?

最佳答案

filterFuture毫无意义,因为类型系统不知道else情况返回什么,因此依靠它(使用if-guard)是不安全的。但是,您可以凭一己之力做到这一点,以实现相同的目的:

val r: Future[play.api.mvc.Result] = for {
account <- accountServer.get(...)
orders <- if (account.isConfirmed) orderService.get(account, ...)
else Future.successful(Seq.empty)
} yield {
...
}

(作为让·洛格(Jean Logeart)的回答,但要有理解力)

关于scala - 如何最好地处理Future.filter谓词不满足类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34572730/

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