我刚刚在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) => ...
}
是砰的操作员!一个特殊情况,与以冒号结尾的方法类似:
答案 0 :(得分:35)
进行模式匹配时,Scala编译器会将o1 c1 o2
解释为c1(o1, o2)
。这就是::
在模式匹配中工作的原因。