enums - Dart 如何获取枚举的 "value"

标签 enums dart

在 Dart 中提供枚举之前,我编写了一些繁琐且难以维护的代码来模拟枚举,现在想要简化它。我需要将枚举的值作为字符串获取,例如可以使用 Java 完成但不能。

例如,当我想要的是“MONDAY”时,在每种情况下,小测试代码片段都会返回“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);
}

关于enums - Dart 如何获取枚举的 "value",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29567236/

相关文章:

swift - 枚举的段错误

ios - Swift - 枚举的子类(或类似的东西)

json - _TypeError 被抛出构建 FutureBuilder<dynamic>(脏,状态 : _FutureBuilderState<dynamic> type 'Null' is not a subtype of type 'List<dynamic>'

swift - 结果枚举被其他库覆盖

java - 使用 JavaPoet 生成枚举

c++ - 静态 constexpr int 与老式枚举 : when and why?

dart - 在 'Void' Flutter 上调用 'onPressed/onTap' 时出错

dart - 如何加载资源文件或包 : URIs in Dart?

events - 为什么我不能将Flutter TextField onChanged事件值传递给Text?

flutter - flutter 有向图。我可以将CustomPainter类与自定义窗口小部件一起使用吗?