繁体   English   中英

如何在 Dart 中设置泛型枚举的类型

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM