Ab 1.8 können Sie folgende Aufzählungen verwenden:
enum Fruit{
apple, banana}
main(){var a =Fruit.apple;switch(a){caseFruit.apple:
print('it is an apple');break;}// get all the values of the enumsfor(List<Fruit> value inFruit.values){
print(value);}// get the second value
print(Fruit.values[1]);}
Diese statischen Konstanten innerhalb der Klasse sind Konstanten für die Kompilierungszeit, und diese Klasse kann jetzt beispielsweise in switchAnweisungen verwendet werden:
var a =Fruit.APPLE;switch(a){caseFruit.APPLE:
print('Yes!');break;}
Die Verwendung constist nicht immer möglich (wenn die Aufzählung mit Attributen erstellt wurde, die nicht möglich sind const). Deshalb habe ich es in meiner Antwort nicht verwendet (obwohl ich manchmal constEnum in meinem Code verwende).
Alexandre Ardhuin
Ich werde diese Antwort akzeptieren, weil es sicherlich nützlich sein wird, den Pseudo-Aufzählungstyp in einer switch-Anweisung zu verwenden
BraveNewMath
1
@KaiSellgren Hinweis Ich denke, der Styleguide hat sich jetzt geändert, daher sollten die Enum-Werte anstelle aller Großbuchstaben kleiner sein. Siehe dartlang.org/articles/style-guide/…
Greg Lowe
2
Was ist List<Fruit> value?
Tom Russell
1
Sie for (Fruit value in Fruit.values)
wollten
9
Mit r41815 hat Dart native Enum-Unterstützung erhalten, siehe http://dartbug.com/21416 und kann wie verwendet werden
Eine Einschränkung besteht darin, dass möglicherweise keine benutzerdefinierten Werte für ein Aufzählungselement festgelegt werden können. Sie werden automatisch nummeriert.
was meiner Meinung nach klarer für den Gebrauch ist. Es ist etwas schwieriger, die Anwendungsstruktur zu programmieren, aber in einigen Fällen ist es besser und klarer.
Ich denke für dieses Beispiel wäre es besser, die Schnittstelle wegzulassen und eine Klasse zu verwenden. Schnittstelle ist eine optionale Abstraktion und
Ich würde es nicht so machen. Ich würde den Namen in Großbuchstaben als halten Fruit.APPLE. Wenn ich dann eine Textausgabe wünschte, hätte ich eine Karte, die sie übersetzt, oder eine Sprachunterstützung separat, wenn ich auch andere Sprachen unterstützen wollte. Ich denke auch, dass switchAnweisungen am besten für ganze Zahlen funktionieren, da sie dann zu einer Sprungtabelle kompiliert werden können.
Kai Sellgren
0
Ja! Es ist eigentlich sehr nützlich, Enums in Dart zu machen:
Antworten:
Ab 1.8 können Sie folgende Aufzählungen verwenden:
Der alte Ansatz vor 1.8:
Diese statischen Konstanten innerhalb der Klasse sind Konstanten für die Kompilierungszeit, und diese Klasse kann jetzt beispielsweise in
switch
Anweisungen verwendet werden:quelle
const
ist nicht immer möglich (wenn die Aufzählung mit Attributen erstellt wurde, die nicht möglich sindconst
). Deshalb habe ich es in meiner Antwort nicht verwendet (obwohl ich manchmalconst
Enum in meinem Code verwende).List<Fruit> value
?for (Fruit value in Fruit.values)
Mit r41815 hat Dart native Enum-Unterstützung erhalten, siehe http://dartbug.com/21416 und kann wie verwendet werden
Eine Einschränkung besteht darin, dass möglicherweise keine benutzerdefinierten Werte für ein Aufzählungselement festgelegt werden können. Sie werden automatisch nummeriert.
Weitere Details finden Sie in diesem Entwurf unter https://www.dartlang.org/docs/spec/EnumsTC52draft.pdf
quelle
Dies und das können die Antworten auf Ihre Frage sein:
Sie können immer noch so etwas tun:
was meiner Meinung nach klarer für den Gebrauch ist. Es ist etwas schwieriger, die Anwendungsstruktur zu programmieren, aber in einigen Fällen ist es besser und klarer.
quelle
Die Aufzählung sollte in Zukunft verfügbar sein. Aber bis Enum gelandet ist , können Sie Folgendes tun:
quelle
Wie wäre es mit diesem Ansatz:
quelle
Fruit.APPLE
. Wenn ich dann eine Textausgabe wünschte, hätte ich eine Karte, die sie übersetzt, oder eine Sprachunterstützung separat, wenn ich auch andere Sprachen unterstützen wollte. Ich denke auch, dassswitch
Anweisungen am besten für ganze Zahlen funktionieren, da sie dann zu einer Sprungtabelle kompiliert werden können.Ja! Es ist eigentlich sehr nützlich, Enums in Dart zu machen:
quelle
Verwenden Sie einfach Types Class File.
Dart-Typen
einfach, schnell, leistungsfähiger und hilfreicher.
Kein Problem, es ist diese Klasse, die auf fünf verschiedene Auswahlmöglichkeiten und plus eine für Nullen beschränkt ist.
quelle