Ausgabe
Ich habe eine Fallklasse wie diese:
case class AEMError(
authError: Option[AEMAuthError] = None,
unexpectedError: Option[AEMUnexpectedError] = None,
)
Ich möchte einen Musterabgleich wie folgt durchführen:
def throwErrorAndLogMessage(error:AEMError,message:String):Unit={
error match {
case authError: Some[AEMAuthError] => {???}
case unexpectedError: Some[AEMUnexpectedError] => {???}
case _ => {???}
}
}
und füge mehrere Fallklassen für verschiedene Arten von Fehlern hinzu, aber ich drehe mich total um die Syntax für Fallübereinstimmung. Kann mir hier jemand helfen?
Lösung
Mit Ihrer Definition von AEMError
können Sie keinen vernünftigen Musterabgleich durchführen, da möglicherweise beide Fehler vorhanden sind.
Sie sollten AEMError
zu ändern
sealed trait AEMError
case class AEMErrorAuth(authError: AEMAuthError) extends AEMError
case class AEMErrorUnexpected(authError: AEMUnexpectedError) extends AEMError
Und benutze es so:
err match {
case AEMErrorAuth(authError) => {
print(authError)
}
case AEMErrorUnexpected(unexpectedError) => {
print(unexpectedError)
}
}
Beantwortet von – talex
Antwort geprüft von – Pedro (FixError Volunteer)