Stellen Sie sich eine Klasse A vor, die abstrakt ist und eine Reihe von Fallklassen aufweist. Wir wissen nicht, wie viele festgelegte Klassen oder sogar der Name dieser Fallklassen ist.Deklarieren einer Methode zum Akzeptieren einer unbekannten Fallklasse als Argument für die Verwendung in der Mustererkennung in Scala
abstract class A(field: String)
//Example of a case class that extends A
case class B(f: String) extends A(f)
Jetzt habe ich dies:
a match {
case B(f) => println("f")
}
Und ich möchte ein Argument in ein Verfahren der Fall Klassentyp zu übergeben. Der Grund, warum ich das möchte, ist, weil ich einen Satz von Regeln in einer Datei konfigurieren werde. Und ich möchte diese Regeln laden und Mustererkennung mit einigen Informationen verwenden, die diese Regeln bieten. Ich möchte so etwas tun:
def printer (a: A, B: A) = {
a match{
case B(f) => println("f")
}
}
Ist das möglich?
Wenn es nicht so einfach ist, kann ich eine abstrakte Klasse im Mustervergleich verwenden? Es wäre perfekt, wenn ich einfach die abstrakte Klasse verwenden könnte, da sie die Hauptstruktur aller Fallklassen hat.
EDIT:
vergessen, dass die Fallklassen zu erwähnen, kann verschiedene Argumente haben, so wäre es gut, etwas zu verwenden, basierend auf der Klasse A (da kann ich meine Muster mit dem Feld passend tun nur)
[Sie werden wahrscheinlich mehr konstruktive Antworten bekommen, wenn Sie mehr über erklären, was Sie * wirklich * zu erreichen versuchen.] (Http://homepage.ntlworld.com/jonathan. deboynepollard/FGA/put-down-the-chocolate-baned-banane.html) –
Ich stimme dir zu, aber wenn ich das tue, wird das zu einer Art riesigen Post. So konzentriere ich mich nur auf das Notwendige. –