说方法(例如'反应')不会返回是什么意思?

时间:2013-12-09 08:16:34

标签: scala actor

在Scala演员中,我们总是学习“react does not return”。这到底是什么意思? “不返回”的方法与返回Unit的方法之间有什么区别。

我的印象是每种方法最终都必须完成(并且可能会或可能不会返回任何内容)。那么react结束时会发生什么?

1 个答案:

答案 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>
}