我有一个enum
,我可以在上面使用MyColors.values
,但是这个values
是在哪里定义的呢?
enum MyColor {
red,
blue,
green,
}
enum MyNumbers {
one,
two,
three,
}
void main() {
getNames(MyColor.values);
getNames(MyNumbers.values);
}
List<String> getNames(List<Enum> enums) {
return enums.values.map((e) => e.name).toList(); // Error
}
那么我如何使用values
呢?
1条答案
按热度按时间t40tm48m1#
enum MyColor { red, blue, green }
创建了一个特殊的MyColor
Enum
类,并创建了它的编译时常量 * 示例 *,命名为red
、blue
和green
。来自Dart语言规范的Enums部分:
(抱歉使用图片;将其重新格式化为Markdown太不切实际了。)
您的
enums
参数是List
,而List
没有value
成员。getNames
的调用方已经传递了Enum
值的列表。您需要:或:
什么是
MyColor
,这是一个Enum
(否),这是一个List<Enum>
,再次否?MyColor
本身是Type
,就像int
或double
或String
或List
一样。MyColor.red
是MyColor
的编译时常量 instance。MyColor.red is MyColor
和MyColor.red is Enum
都为true。这与以下情况没有根本区别:
Derived
和Base
是Type
对象。Derived is Base
为false(Type
对象不是Base
的示例)。但是,Derived() is Base
为true。