Nehmen wir an, dass ich eine einfache Klasse habe (d. h. ich kann sie nicht ändern), die wie folgt definiert ist:
%Vor%Ist es möglich, Instanzen dieser Klasse mit bestimmten Mustern zu vergleichen?
Ich möchte zum Beispiel Funktion implementieren:
%Vor% ... das price is {some value}
für jedes price
ausgibt, das in allen anderen Fällen value <= 9000
und price is over 9000
hat.
Zum Beispiel:
%Vor%sollte drucken:
%Vor% Wie kann ich printPrice
mithilfe der Mustererkennung implementieren?
Dachte über die Annahme von Flavian's Lösung nach, kam aber etwas besser auf die Idee.
So könnte man printPrice
implementieren (ohne Wrapper-Objekte zu verwenden und die ursprüngliche Klasse zu ändern):
PS: Credits zu flavian, um zu zeigen, dass du if
im Muster verwenden kannst. Upvoting Ihre Antwort dafür.
Sie können einen benutzerdefinierten Extraktor erstellen:
%Vor%Für Fallklassen generiert der Compiler dies automatisch. Ich denke, in Ihrem Fall Extraktoren ist Overkill, aber möglicherweise ist es nur eine vereinfachte Probe.
Tags und Links scala pattern-matching