Die primäre Verwendung des case
Schlüsselwort in anderen Sprachen in switch
-Aussagen, die auf enum
s oder vergleichbaren Werten meist verwendet werden, wie zum Beispiel int
s oder string
s verwendet werden, verschiedene wohldefinierte Fälle darstellen:
switch (value)
{
case 1: // do x -
case 2: // do y -
default: // optional
}
in scala diese Klassen oft die spezifischen gut definierten möglichen Instanzen einer abstrakten Klasse dar und werden in der gleichen Art und Weise zwingend notwendig, Code verwendet u ses switch-Anweisungen innerhalb match
-clauses:
value match {
case Expr(lhs, rhs) => // do x
case Atomic(a) => // do y
case _ => // optional, but will throw exception if something cannot be matched whereas switch won't
}
Ein Großteil des Verhaltens der Fallklassen wie die Art und Weise können sie Ziele in solchen Aussagen zu erleichtern/ermöglichen ihre Verwendung konstruiert werden.
Ich denke hauptsächlich, weil sie als Muster in _pattern matching_ Ausdrücke, z.B. 'myVal match {Fall MyCaseClass (a, b) => ...}', wobei jede Fallklasse ein separater _case _... ist. –
An wen auch immer gestimmt hat: Ich denke nicht, dass diese Frage zu weit gefasst ist. – pedrofurla
Offensichtlich ist eine Fallklasse nur ein Container von Datenfeldern, so wie ein Koffer ein Container von Anzügen ist. –