Come sta questo caso classe pattern match funziona?
-
21-08-2019 - |
Domanda
Ho appena visto questa classe caso nella Scala actors
pacchetto:
case class ! [a](ch: Channel[a], msg: a)
E nel JavaDoc descrive l'utilizzo nella forma seguente:
receive {
case Chan1 ! msg1 => ...
case Chan2 ! msg2 => ...
}
Perché questo non è:
receive {
case !(Chan1, msg1) => ...
case !(Chan2, msg2) => ...
}
è l'operatore botto! un caso speciale in un modo simile ai metodi che terminano in due punti:
Soluzione
Quando si esegue il pattern matching, il compilatore Scala interpreterà o1 c1 o2
lo stesso c1(o1, o2)
. Ecco perché ::
lavora all'interno modello corrisponde anche.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow