[英]How to set the type of a generic enum in Dart
鉴于以下枚举:
enum Animal<T> {
cow,
goat;
}
如何设置类型?
如果我这样做:
void main() {
final animal = Animal.cow;
}
Dart 推断animal
的类型是Animal<dynamic>
。 但是,我无法使用以下任何一种方式设置类型:
// The static member 'cow' can't be accessed on a class instantiation.
final animal = Animal<int>.cow;
// `animal` is inferred to be `dynamic`, not `Animal<int>`.
final animal = Animal.cow<int>;
当然,我没有在任何地方使用该类型,但这是我能想到的最简单的示例来演示我的问题。 我如何将类型设置为int
?
枚举值必须是常量,因此需要将泛型指定为在枚举定义中初始化枚举值的一部分。
所以是这样的:
enum Animal<T> {
cow<String>(),
goat<int>();
}
void main() {
print(Animal.cow.runtimeType); // Animal<String>
print(Animal.goat.runtimeType); // Animal<int>
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.