Ich habe einen Selbst rekursiven Typ:Muster auf generische abstrakte Art in scala passend
trait Problem[P <: Problem[P]] {
type Solution
}
Jetzt will ich Match Muster auf P#Solution
. Nehmen wir an, wir im case class Foo[P <: Problem[P]]()
sind:
case ExampleCaseClass(s: P#Solution) if conditionApplies() =>
// do sth
case ExampleCaseClass(s: P#Solution) =>
// now sth else
Natürlich scheitert es durch Löschen geben. Gibt es eine Möglichkeit, diesen Code in scala zu kompilieren?
Ich habe Klassen-/Typ-Tags gesehen, aber ich bin mir nicht sicher, ob sie in einem solchen Fall verwendet werden können.
Scheint ein bisschen laut zu sein. Was passiert, wenn ich auch eine Musterung für eine völlig andere Klasse im selben Block erstellen muss? – slnowak
Wenn Sie Typen vergleichen müssen, die durch Löschen eliminiert werden, glaube ich nicht, dass es eine prägnantere Lösung gibt, aber ich würde mich sehr freuen, davon zu hören. – devkat