2009-06-29 11 views
13

Właśnie widziałem ten przypadek klasę w pakiecie Scala actors:Jak działa ten wzór dopasowania klasy case?

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

A w JavaDoc opisuje wykorzystanie w następującej formie:

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

Dlaczego to nie:

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

Jest operatorem huk! specjalny przypadek podobny do metod kończących się dwukropkiem:

Odpowiedz

33

Podczas wykonywania dopasowywania wzorca kompilator Scala interpretuje o1 c1 o2 tak samo, jak c1(o1, o2). Dlatego :: działa również w dopasowaniach wzorców.

+2

Pozdrawiam za odpowiedź. Wstyd, nie ma więcej punktów, które można uzyskać, odpowiadając na pytania Scali! –