这个案例类匹配模式是如何工作的?

oxb*_*kes 13 scala pattern-matching case-class

我刚刚在Scala actors包中看到过这个case类:

case class ! [a](ch: Channel[a], msg: a)
Run Code Online (Sandbox Code Playgroud)

在JavaDoc中,它以下列形式描述了用法:

receive {
  case Chan1 ! msg1 => ...
  case Chan2 ! msg2 => ...
}
Run Code Online (Sandbox Code Playgroud)

为什么不是这样的:

receive {
  case !(Chan1, msg1) => ...
  case !(Chan2, msg2) => ...
}
Run Code Online (Sandbox Code Playgroud)

是砰的操作员!与以冒号结尾的方法类似的特殊情况:

Dan*_*ral 35

在进行模式匹配时,Scala编译器会将其解释o1 c1 o2c1(o1, o2).这就是为什么::在模式匹配中工作的原因.

  • 干杯为答案.遗憾的是,回答Scala问题没有多少要点! (2认同)