Scala 承诺';没有';永远不会完成?

Scala 承诺';没有';永远不会完成?,scala,akka,promise,Scala,Akka,Promise,我想知道为什么当我通过“\u1”作为完成结果时,“什么都没有”的承诺永远不会完成。当我想用承诺来表示某事已经完成时,我遇到了这种情况: val promiseWillFinish = Promise() promiseWillFinish.success(_) // will time out Await.ready(promiseWillFinish, 5 seconds) // will return false println(promiseWillFinish.i

我想知道为什么当我通过“\u1”作为完成结果时,“什么都没有”的承诺永远不会完成。当我想用承诺来表示某事已经完成时,我遇到了这种情况:

  val promiseWillFinish = Promise()
  promiseWillFinish.success(_)
  // will time out
  Await.ready(promiseWillFinish, 5 seconds)
  // will return false
  println(promiseWillFinish.isCompleted)
现在我使用的是一个单位承诺,它工作得很好,也更清晰一些。但我仍然想知道上面的代码以超时/未完成的承诺结束


我用Akka 2.0决赛运行了这个程序。

我不认为Promise会完成。成功(41;意味着你认为它意味着什么。它是部分应用程序,这意味着该表达式的结果是一个函数。您从未调用
success
方法,只是为方法调用创建了一个新的匿名函数


我猜您有一个
承诺[无]
,并试图使用
\uuuu
作为
类型的默认值。但是根据定义,没有类型为
Nothing
的值。请参见类型
Nothing
的可能值(非
null
,一点也没有)。
Nothing
的承诺无法完成,就像结果类型为
Nothing
的函数无法返回一样

由于没有类型为
Nothing
的值,因此无法调用success。事实上,你不是在说成功,你误解了这里的意思:

当您声明一个
var
(并且仅当您声明它时),您可以使用“\ux”将其设置为默认值。v
ar v:Int=\uu
v
设置为
0
,而
var v:String=\u
将其设置为
null
。如果您不带任何内容尝试该操作,
var v:Nothing=.
,它将崩溃。同样,没有类型为
Nothing
的值

另一方面,当您编写
promiseWithFinish.Success(41;
时,它是

x => promiseWithFinish.Success(x)

你正在创建一个函数值,而不是使用它,你什么也没做

好的,谢谢。我以为我对这里的“u”没有任何误解。谢谢你的澄清。谢谢你的澄清。