Ich möchte die Warnung nutzen, die Scala gibt, wenn ein Abgleich fehlt ("nicht erschöpfend") - damit ich einen nicht vergesse (ich habe Dutzende). Das folgende vereinfachte Beispiel zeigt meinen Versuch:Scala Pattern Matching sagt immer "Match ist nicht erschöpfend!"
sealed case class MESSAGE()
class SUCCESS_MESSAGE extends MESSAGE
class FAILURE_MESSAGE extends MESSAGE
def log(str: String, msgType: MESSAGE) {
msgType match {
case t:SUCCESS_MESSAGE => println("FAILURE: " + str)
case t:FAILURE_MESSAGE => println("SUCCESS: " + str)
}
}
Das Problem ist, dass es sagt, "Match ist nicht erschöpfend!" obwohl alle möglichen Kombinationen aufgeführt sind. Wenn ich das setzen würde „Fall _ =>“ dort wird der ganze Sinn der Warnung für mich für ungültig erklärt, weil ich
class INFO_MESSAGE extends MESSAGE
und keine Warnung ausgegeben würde hinzufügen könnte.
Gibt es eine Lösung?
SUCCESS_MESSAGE sollte drucken "failure:" sind Sie ganz sicher? –
Ich würde sehr empfehlen, eine Fallklasse in jedem Fall zu erweitern. Nur zu deiner Information. – jsuereth