在DART中提供枚举之前,我编写了一些繁琐且难以维护的代码来模拟枚举,现在我想简化它.我需要以字符串的形式获取枚举的值,比如可以用Java来实现,但不能.

例如,当我想要的是"星期一"时,在每种情况下,小测试代码片段都返回"day.MONDAY".

enum day {MONDAY, TUESDAY}
print( 'Today is $day.MONDAY');
print( 'Today is $day.MONDAY.toString()');

要获得"星期一",我需要解析字符串,这对吗?

推荐答案

遗憾的是,toString方法返回"day.MONDAY",而不是更有用的"MONDAY",这是正确的. 您可以通过以下方式获取字符串的睡觉:

day theDay = day.MONDAY;      
print(theDay.toString().substring(theDay.toString().indexOf('.') + 1));

诚然,这几乎不方便.

将枚举名作为字符串获取的另一种方法是,这种方法更短,但效率也较低,因为它也为字符串的第一部分创建了不必要的字符串:

theDay.toString().split('.').last

如果性能无关紧要,我可能会这么写,只是为了简短.

如果要迭代所有值,可以使用day.values:

for (day theDay in day.values) {
  print(theDay);
}

Dart相关问答推荐

如何找到这个Currate函数的返回类型?

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

Dart:当两个或多个任务等待同一个 Future 时会发生什么

使用 2 个类型参数声明类型StateNotifierProvider,但给出了 1 个类型参数

触发从小部件到状态对象的函数

Flutter:是否可以有多个 Futurebuilder 或一个 Futurebuilder 用于多个 Future 方法?

VSCode Flutter Dart 启动慢的建议

flutter命令运行失败

Flutter:如何检测键盘按键?

停止音频循环(audioplayers 包)

如何在Dart中创建空Map

将Dart嵌入到应用程序中

基于镜子的反射和传统反射有什么区别?

带有 Dart 的 CORS,我如何让它工作?

polymer SEO 是否友好?

GWT 与 Dart - 主要区别是什么? Dart 是 GWT 的潜在替代品吗?

是否可以在 Dart 中的一行上初始化列表?

Dart 字符串比较器

Dart中var和dynamic类型的区别?

如何在构造函数中初始化最终类属性?