2009-06-29 66 views
13

我刚看到这种情况下类斯卡拉actors包:这种案例类匹配模式如何工作?

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

而且在JavaDoc它描述为以下形式使用:

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

这是为什么不:

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

是爆炸操作员!类似于以冒号结尾的方法:

回答

33

在进行模式匹配时,Scala编译器将解释与c1(o1, o2)相同的o1 c1 o2。这就是为什么::也适用于模式匹配。

+2

欢呼的答案。一个耻辱,回答斯卡拉问题没有更多的要点! – 2009-06-29 16:17:21