@在Scala中是什么意思



研究akka的来源时,我在akka.event.slf4j.SLF4JLogger Actor中找到以下内容:

def receive = {
    //...
    case event @ Warning(logSource, logClass, message) ⇒
      withMdc(logSource, event) { Logger(logClass, logSource).warn("{}", message.asInstanceOf[AnyRef]) }
    case event @ Info(logSource, logClass, message) ⇒
      withMdc(logSource, event) { Logger(logClass, logSource).info("{}", message.asInstanceOf[AnyRef]) }
    case event @ Debug(logSource, logClass, message) ⇒
      withMdc(logSource, event) { Logger(logClass, logSource).debug("{}", message.asInstanceOf[AnyRef]) }
    //...
}

我不太了解什么是@符号。这不是一种方法,也没有范围内event的声明。WarningInfoDebug都是具有应用方法的所有对象。

它称为变量绑定:

除了独立变量模式外,您还可以添加一个 变量到任何其他模式。您只需写入变量名称,一个 在标志(@),然后是图案。这为您提供了可变的结合 图案。这种模式的含义是执行模式匹配 正常,如果模式成功,请将变量设置为 与简单的变量模式一样匹配的对象。

http://www.artima.com/pins1ed/case-classes-and-pattern-mattering.html

相关内容

  • 没有找到相关文章