Comment cette classe cas modèle de correspondance fonctionne?
-
21-08-2019 - |
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:
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