首页 文章

scala外壳是什么意思?

提问于
浏览
0

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

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

这个语法 SomeName { } 是什么意思?我知道在scala {} 中创建一个语句块,并为最后一行分配变量 . 评论解释如下:

在日志记录间隔中包含接收部分功能

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

1 回答

  • -1

    在akka中, receive 方法必须具有 Receive 作为结果类型 . 所以在这里他们使用了一个对象 LoggingReceive ,它有一个 apply 方法定义如下:

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

    在Scala中,我们有一个语法糖结构,所以不要调用:

    LoggingReceive.apply(...)
    

    你可以简单地写:

    LoggingReceive(...)
    

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

    LoggingReceive{...}
    

    所以最后他们只是简单地用 receive 方法 receive 方法包装 receive 方法,该方法调用 withLabel() 方法 .

相关问题