【发布时间】:2016-03-19 03:29:16
【问题描述】:
在 Scala 中是否存在不能失败的 Future 的概念?
我正在将可能失败的Future[Result](因此我同时处理Failure 和Success)转换为Future[Option[String]],并带有从失败或成功状态派生的可选错误消息。到目前为止,一切顺利。
事情是现在,我想正式(即,在类型系统的帮助下)记住这个未来将始终持有Success,并且我将来不需要处理失败案例。
有没有聪明的方法来做到这一点?
【问题讨论】:
-
为什么需要这个?编辑:您是否只是忽略了一些:结果以返回可选的错误消息:字符串?
-
为什么不
Future[Try[T]]? -
@Jean-PhilippePellet 我只是在谈论扩展一个类/特征和覆盖方法并给出错误,但事实证明这是不可能的,或者至少对于
Future来说是不可能的,所有Futureimpl .是私有的,扩展和覆盖它们似乎是不可能的 -
我在玩@Jean-PhilippePelle 提出的想法,我使用委托扩展了Future。 scalafiddle.net/console/3ce0331cbd983f1689e1eea65561cac。我工作,但当然,每次您进行转型时,您都会恢复正常的未来。
-
@KevinMeredith Futures don't catch and failed Futures不能容纳致命错误,所以
recover { case _ => ??? }相当于recover { case NonFatal(_) => ??? }:docs.scala-lang.org/overviews/core/futures.html#exceptions