Question

Je viens de voir cette classe de cas dans la Scala package actors:

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

Et dans le JavaDoc décrit l'utilisation sous la forme suivante:

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

Pourquoi est-ce pas:

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

est l'opérateur bang! un cas particulier d'une manière similaire aux méthodes se terminant par deux points:

Était-ce utile?

La solution

Quand vous faites correspondance de motif, le compilateur Scala interprétera le même que o1 c1 o2 c1(o1, o2). Voilà pourquoi fonctionne à l'intérieur modèle :: correspond aussi.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top