Ich versuche, Enum-Verhalten mit Case-Objekt zu simulieren. Es fühlt sich ein wenig ausschweifend und nicht elegant an und ich frage mich, ob es einen besseren Weg gibt, dies zu erreichen.
Hier ist ein Beispiel:
%Vor%Gibt es eine bessere Möglichkeit, diese umgekehrte Zuordnung von einer Zeichenfolge zum eigentlichen Fallobjekt zu erhalten? Oder generell besser umsetzen?
Ich bevorzuge einen solchen Ansatz:
%Vor%um einen Wert zu erhalten:
%Vor%um alle Werte zu erhalten:
%Vor% Basic enumerations
in Scala
sind ungeschickt:
scala.MatchError
in der Laufzeit konfrontiert werden / li>
Überladen mit nicht funktionierenden Scala-Enumerationen aufgrund der gleichen Art von Enumerationen nach dem Löschen. Daher ist der nächste Code-Snapshot nicht gültig:
%Vor% Es wird error: double definition: have the same type after erasure: (x: Enumeration#Value)String
geworfen.
Wie Sie sehen, ist scala.Enumeration
nicht benutzerfreundlich und verwenden Sie es lieber nicht, es wird Ihnen das Leben erleichtern.
Richtige Ansätze:
Der richtige Ansatz ist die Kombination von case object
oder object
mit sealed
class:
Sie können auch wrapper object
für die Enumeration nicht verwenden:
Nutzung der Bibliothek von Drittanbietern - Enumeratum kann auch das Problem von scala.enumeration
lösen, es ist eine typsichere und mächtige Enumerationsimplementierung und einfach zu bedienen und zu verstehen.
Ich bevorzuge einen solchen Ansatz
%Vor%Das Schöne daran ist, dass Sie dieses Muster verwenden können
%Vor%