Dart是否支持枚举?例如:
enum myFruitEnum { Apple, Banana }
Run Code Online (Sandbox Code Playgroud)
粗略搜索文档表明没有.
Kai*_*ren 123
从1.8开始,你可以使用这样的枚举:
enum Fruit {
apple, banana
}
main() {
var a = Fruit.apple;
switch (a) {
case Fruit.apple:
print('it is an apple');
break;
}
// get all the values of the enums
for (List<Fruit> value in Fruit.values) {
print(value);
}
// get the second value
print(Fruit.values[1]);
}
Run Code Online (Sandbox Code Playgroud)
1.8之前的旧方法:
class Fruit {
static const APPLE = const Fruit._(0);
static const BANANA = const Fruit._(1);
static get values => [APPLE, BANANA];
final int value;
const Fruit._(this.value);
}
Run Code Online (Sandbox Code Playgroud)
类中的那些静态常量是编译时常量,现在可以在例如switch
语句中使用此类:
var a = Fruit.APPLE;
switch (a) {
case Fruit.APPLE:
print('Yes!');
break;
}
Run Code Online (Sandbox Code Playgroud)
有了r41815,Dart得到了原生的Enum支持,请参阅http://dartbug.com/21416并可以像
enum Status {
none,
running,
stopped,
paused
}
void main() {
print(Status.values);
Status.values.forEach((v) => print('value: $v, index: ${v.index}'));
print('running: ${Status.running}, ${Status.running.index}');
print('running index: ${Status.values[1]}');
}
Run Code Online (Sandbox Code Playgroud)
[Status.none,Status.running,Status.stopped,Status.paused]
value:Status.none,index:0
value:Status.running,index:1
value:Status.stopped,index:2
value:Status.paused, index:3
运行:Status.running,1
运行索引:Status.running
限制是不可能为枚举项设置自定义值,它们会自动编号.
本草案中的更多细节https://www.dartlang.org/docs/spec/EnumsTC52draft.pdf
枚举将来应该可用。但在Enum 落地之前,您可以执行以下操作:
class Fruit {
static final APPLE = new Fruit._();
static final BANANA = new Fruit._();
static get values => [APPLE, BANANA];
Fruit._();
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
28545 次 |
最近记录: |