gpt4 book ai didi

scala - 在 Scala 中不会失败的 future

转载 作者:行者123 更新时间:2023-12-04 17:33:15 26 4
gpt4 key购买 nike

有没有Future的概念在 Scala 中不会失败?

我正在改造 Future[Result] ,这可能会失败——因此我处理了 Failure和一个 Success ——进入Future[Option[String]] ,携带从失败或成功状态派生的可选错误消息。到现在为止还挺好。

事情是现在,我想正式地(即在类型系统的帮助下)记住这个 future 将永远持有 Success并且我将来不需要处理失败案例。

有没有聪明的方法来做到这一点?

最佳答案

你不能“在类型系统的帮助下”做到这一点,因为类型系统无法保证 Future不会失败,即使你保证不会失败。

考虑一下:

 Future { doStuff(); }
.recover { case _ => "Failed!" } // Now it always succeeds
.map { _ => Seq.empty[String].head } // Now it does not.

即使您打算进行任何进一步的转换,一旦 Future已被声明为总是成功,这仍然无济于事,因为异常处理程序(或您所做的任何将原始 future 转换为“总是成功的”)可能会抛出。

更新:正如下面的评论所指出的,上面的代码片段是不正确的: .map 的结果不一样 Future作为 .recover 的结果.然而,这一点是成立的。这是正确的插图:
Future { doStuff }
.recover { case _ => Seq.empty[String].head }

关于scala - 在 Scala 中不会失败的 future ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36084245/

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