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:

È stato utile?

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
scroll top