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

例如,在每种情况下,当我想要的是“MONDAY”时,很少的测试代码片段返回“day.MONDAY”

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

我是否正确,只需要解析“MONDAY”字符串即可?

最佳答案

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

day theDay = day.MONDAY;
print(theDay.toString().substring(theDay.toString().indexOf('.') + 1));
诚然,这不太方便。
如果要迭代所有值,可以使用day.values进行操作:
for (day theDay in day.values) {
  print(theDay);
}

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

10-10 15:57