Safari Books Online is a digital library providing on-demand subscription access to thousands of learning resources.
Erinnern Sie sich übrigens noch an die im „Matching mit Sequenzen“ behandelten Matching-Operationen mit Listen? Dort schrieben wir diesen case-Ausdruck:
defprocessList(l:List[Any]):Unit= lmatch{casehead :: tail=>... ... }
Nun stellt sich heraus, dass die folgenden beiden Ausdrücke identisch sind:
casehead :: tail=>...case::(head, tail)=>...
Wir benutzen hier das Begleitobjekt einer Case-Klasse namens ::, das man für nichtleere Listen verwenden kann. Wenn es in case-Ausdrücken verwendet wird, unterstützt der Compiler diese spezielle Infixoperator-Notation für den Aufruf von unapply.
Das funktioniert auch bei unapply-Methoden mit nur einem oder mehr als zwei Argumenten. Wir könnten daher unsere Methode matchOn folgendermaßen umschreiben: