Scala Pattern Matching sagt immer "Match ist nicht erschöpfend!"

7

Ich möchte die Warnung nutzen, die Scala gibt, wenn ein Matching fehlt ("nicht erschöpfend") - damit ich eines nicht vergesse (ich habe Dutzende). Das folgende vereinfachte Beispiel zeigt meinen Versuch:

%Vor%

Das Problem ist, dass es sagt "Match ist nicht erschöpfend!" obwohl alle möglichen Kombinationen aufgeführt sind. Wenn ich den "Fall _ = & gt;" da ist der ganze Punkt der Warnung für mich ungültig, weil ich

hinzufügen könnte %Vor%

und keine Warnung ausgegeben.

Gibt es eine Lösung?

    
stephanos 25.10.2010, 13:43
quelle

2 Antworten

32

Idealerweise sollten Sie keine konkrete Klasse erweitern, insbesondere keine Fallklasse!

Da es keine Möglichkeit gibt, SUCCESS_MESSAGE und FAILURE_MESSAGE anzupassen, möchten Sie wahrscheinlich auch diese Singletons erstellen.

Schließlich sind Unterstriche ein Schlechtes Ding (tm) in Scala Variablen- oder Klassennamen. Alle UPPERCASE-Namen sind auch nicht idiomatisch. Also:

%Vor%

Alternativ, und ich würde dies empfehlen, können Sie die tatsächliche Nachrichtenfolge umbrechen:

%Vor%     
Kevin Wright 25.10.2010, 14:03
quelle
27

Sie haben einen Fall übersehen: Die Nachricht könnte eine Instanz von MESSAGE sein, nicht eine ihrer Unterklassen.

Wenn Sie diesen Fall unmöglich machen wollen, müssen Sie MESSAGE abstract machen. Dies wird die Warnung verschwinden lassen.

    
sepp2k 25.10.2010 13:47
quelle

Tags und Links