Akka context.become vs直接函数调用

时间:2015-07-27 16:37:24

标签: scala akka

关于反应式编程第5周的Coursera课程有建立网络爬虫的例子

https://github.com/rkuhn/linkchecker/blob/master/src/main/scala/info/rkuhn/linkchecker/Receptionist.scala

“runNext”和“enqueueJob”直接调用“running”函数,而“running”通过行为改变(conext.become)调用“runnext”和“enqueueJob”。

直接调用函数或通过context.become直接调用函数之间有什么区别,将它放在hotswap堆栈的顶部,就像context.become一样?

谢谢, 阿伦

1 个答案:

答案 0 :(得分:0)

首先,ReceivePartialFunction[Any, Unit]的类型别名。

在该示例中runNextenqueueJob不调用runningwaiting,它们是返回部分函数的函数,具体取决于输入。我知道这有点令人困惑,因为所有四个函数都有类似的签名。但是,runningwaiting这四个实际上只是实现了PartialFunction[Any, Unit](由case语句识别)。