gpt4 book ai didi

scala - 'Nothing' 的 promise 永远不会完成?

转载 作者:行者123 更新时间:2023-12-04 21:59:51 24 4
gpt4 key购买 nike

我想知道为什么当我传递“_”作为完成结果时,“Nothing”的 promise 永远不会完成。当我想使用 Promise 来表示某事已完成时,我遇到了这个问题:

  val promiseWillFinish = Promise()
promiseWillFinish.success(_)
// will time out
Await.ready(promiseWillFinish, 5 seconds)
// will return false
println(promiseWillFinish.isCompleted)

现在我正在使用一个 Promise of Unit,它工作正常,也更清晰一点。但我仍然想知道上面的代码以超时/未完成的 Promise 结束。

我用 Akka 2.0 final 运行了这个。

最佳答案

没有可能的类型值 Nothing无论如何(不是 null ,根本没有)。 Nothing的 promise 无法完成,就像结果类型为 Nothing 的函数一样无法返回。

因为没有 Nothing 类型的值,没有办法叫成功。事实上,您并不是在称成功,而是误解了 _ 在这里的含义:

当您声明 var 时(并且仅当您声明它时),您可以使用“_”将其设置为默认值。 v ar v : Int = _将设置 v0 , 和 var v: String = _将其设置为 null .如果您尝试使用 Nothing,var v : Nothing = _ ,会崩溃。同样,没有 Nothing 类型的值.

另一方面,当你写 promiseWithFinish.Success(_)这是一条捷径

x => promiseWithFinish.Success(x)

您正在创建一个函数值,而不是使用它,您什么​​都不做。

关于scala - 'Nothing' 的 promise 永远不会完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9819897/

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