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

时间:2009-06-29 16:11:18

标签: scala pattern-matching case-class

我刚刚在Scala actors包中看到了这个案例类:

case class ! [a](ch: Channel[a], msg: a)

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

receive {
  case Chan1 ! msg1 => ...
  case Chan2 ! msg2 => ...
}

为什么不是这样:

receive {
  case !(Chan1, msg1) => ...
  case !(Chan2, msg2) => ...
}

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

1 个答案:

答案 0 :(得分:35)

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