scala外壳是什么意思?

时间:2017-02-05 09:02:46

标签: scala akka

我正在查看ActorLogging here,并且遇到了这种语法:

def receive = LoggingReceive {
   case x => ...
}

这种语法SomeName { }是什么意思?我知道在scala {}中创建一个语句块,最后一行被赋予变量。评论将其解释为:

  

在日志记录框中包装接收部分功能

是否有技术术语,以便我可以更多地了解它的用法? 注意:我知道部分功能是什么。从评论和答案中我了解到LoggingReceive返回部分函数和apply的语法。

1 个答案:

答案 0 :(得分:-1)

在akka中,receive方法必须以Receive作为结果类型。所以他们在这里使用的对象LoggingReceive的{​​{1}}方法定义如下:

apply

在Scala中,我们有一个语法糖结构,而不是调用:

def apply(r: Receive)(implicit context: ActorContext): Receive = withLabel(null)(r)

您可以简单地写一下:

LoggingReceive.apply(...)

还有另一件事 - 在Scala中我们可以使用LoggingReceive(...) 括号而不是{...}括号,因此上面的表达式可以写成:

(...)

所以最后他们只是简单地使用调用LoggingReceive{...} 方法的receive apply方法包裹LoggingReceive方法。