DART语言没有枚举(还没有??).构建枚举的正确或惯用方式是什么,至少在语言特性出现之前是这样吗?

推荐答案

使用r41815,Dart获得了本机枚举支持,请参见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]}');
}

[Status.None,Status.Running,Status.stop,Status.Pased]
值:Status.None,索引:0
值:Status.running,索引:1
值:Status.stop,索引:2
值:Status.Pased,索引:3
正在运行:Status.running,%1
运行索引:Status.running

一个限制是不可能为枚举项设置自定义值,它们会自动编号.

有关更多详细信息,请参阅本草稿中的第https://www.dartlang.org/docs/spec/EnumsTC52draft.pdf

Dart相关问答推荐

为什么我们在dart 里有工具?

默认情况下不可为空(Non-nullable ):如何启用experiment?

如何在streambuilder中查询firestore文档并更新listview

SliverList / SliverChildBuilderDelegate 提供初始索引或允许负索引

如何使用Flutter dio 下载文件?

使用brave浏览器调试flutter web app

判断 Future 是否完整

Flutter插件和Flutter模块之间有什么区别?

Flutter Drawer Widget - 更改 Scaffold.body 内容

如何减少 ListView.builder 中 RaisedButton 的宽度?

在小部件上显示对话框

Flutter:如何获取assets目录中所有图像的名称列表?

如何在 Dart 2 中将 List 更改为 List

轻松判断数字是否在 Dart 的给定范围内?

如何从 Dart 中的 forEach 循环返回?

如何使用 Dart 列出目录的内容?

如何在 Dart 中逐个字符地迭代字符串?

必须初始化不可为空的实例字段

如何在 Dart 中运行重复出现的函数?

如何在 Dart 中引用另一个文件?