2009-06-29 12 views
13

acabo de ver esta clase en el paquete caso Scala actors:¿Cómo funciona este patrón de coincidencia de clases de casos?

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

Y en el JavaDoc se describe el uso de la siguiente forma:

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

qué esto no es:

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

¡Es el operador de bang! un caso especial de manera similar a los métodos que terminan en dos puntos:

Respuesta

33

Al hacer la coincidencia de patrones, el compilador de Scala interpretará o1 c1 o2 de la misma manera que c1(o1, o2). Es por eso que :: funciona dentro del patrón también.

+2

Saludos por la respuesta. ¡Una pena que no haya más puntos para contestar las preguntas de Scala! –

Cuestiones relacionadas