Gam*_*lor 4 scala promise akka
我想知道为什么当我通过"_"作为完成结果时,"没什么"的承诺永远不会完成.当我想使用Promise来表示事情已经完成时,我碰到了这个:
val promiseWillFinish = Promise()
promiseWillFinish.success(_)
// will time out
Await.ready(promiseWillFinish, 5 seconds)
// will return false
println(promiseWillFinish.isCompleted)
Run Code Online (Sandbox Code Playgroud)
现在我正在使用一个单位的承诺,它工作正常,也更清晰一点.但我仍然想知道上面的代码在超时/未完成的Promise中结束了.
我用Akka 2.0决赛跑了这个.
Did*_*ont 11
任何类型Nothing都没有可能的价值(不是null,根本没有).承诺Nothing无法完成,就像结果类型的函数Nothing无法返回一样.
由于没有类型的价值Nothing,因此无法称之为成功.事实上,你并没有称之为成功,你误解了_在这里意味着什么:
当你声明一个var(并且只在你声明它时),你可以用'_'将它设置为默认值.v ar v : Int = _将设置v为0,var v: String = _并将其设置为null.如果你尝试Nothing var v : Nothing = _,它会崩溃.同样,没有类型的价值Nothing.
另一方面,当你写promiseWithFinish.Success(_)它是一个快捷方式
x => promiseWithFinish.Success(x)
Run Code Online (Sandbox Code Playgroud)
您正在创建一个函数值,而不是使用它,您什么都不做.
| 归档时间: |
|
| 查看次数: |
1235 次 |
| 最近记录: |