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

13

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

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

JavaDoc中描述了以下形式的用法:

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

为什么这个不行:

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

感叹号运算符 ! 是否与以冒号 : 结尾的方法一样是一种特殊情况?

1个回答

36

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


2
感谢您的回答。遗憾的是,回答Scala问题无法获得更多积分! - oxbow_lakes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接