[FIXED] Scala 2: Fallklassenmusterabgleich zum Anzeigen von Fehlern

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 AEMErrorkönnen Sie keinen vernünftigen Musterabgleich durchführen, da möglicherweise beide Fehler vorhanden sind.

Sie sollten AEMErrorzu ä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)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like