在Scala演员中,我们总是学习“react does not return”。这到底是什么意思? “不返回”的方法与返回Unit
的方法之间有什么区别。
我的印象是每种方法最终都必须完成(并且可能会或可能不会返回任何内容)。那么react
结束时会发生什么?
答案 0 :(得分:2)
def react(...): Nothing = ...
您无法获得Nothing
的实例。这意味着react
将更新完成正确。
它将永远运行或最终会抛出异常。
react(...)
println("You'll never get here!")
如果Actor#react
只是throws例外。
方法loop
捕获此异常。有关详细说明,请参阅Actors that Unify Threads and Events,Philipp Haller和Martin Odersky,Proc。 COORDINATION 2007.您不需要这些细节与演员合作,您应该知道react
之后的所有代码都无法访问:
loop {
<code before react>
react {...}
<unreachable code>
}