Looking for scala Keywords? Try Ask4Keywords

Scala LanguageAufzählungen


Bemerkungen

Ein Ansatz mit sealed trait und case objects wird bevorzugt, da die Aufzählung von Scala einige Probleme aufweist:

  1. Aufzählungen haben nach dem Löschen denselben Typ.
  2. Der Compiler beschwert sich nicht über "Match ist nicht erschöpfend". Wenn die Groß- / Kleinschreibung übersehen wird, scala.MatchError in Laufzeit scala.MatchError :
def isWeekendWithBug(day: WeekDays.Value): Boolean = day match {
  case WeekDays.Sun | WeekDays.Sat => true
}

isWeekendWithBug(WeekDays.Fri)
scala.MatchError: Fri (of class scala.Enumeration$Val)

Vergleichen mit:

def isWeekendWithBug(day: WeekDay): Boolean = day match {
  case WeekDay.Sun | WeekDay.Sat => true
}

Warning: match may not be exhaustive.
It would fail on the following inputs: Fri, Mon, Thu, Tue, Wed
def isWeekendWithBug(day: WeekDay): Boolean = day match {
                                          ^

Eine ausführlichere Erklärung zu Scala Enumeration finden Sie in diesem Artikel .

Aufzählungen Verwandte Beispiele