鑒于以下列舉:
enum Animal<T> {
cow,
goat;
}
如何設定型別?
如果我這樣做:
void main() {
final animal = Animal.cow;
}
Dart 推斷出animalto的型別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?
uj5u.com熱心網友回復:
列舉值必須是常量,因此需要將泛型指定為在列舉定義中初始化列舉值的一部分。
所以是這樣的:
enum Animal<T> {
cow<String>(),
goat<int>();
}
void main() {
print(Animal.cow.runtimeType); // Animal<String>
print(Animal.goat.runtimeType); // Animal<int>
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/497262.html
上一篇:使用影片洗掉所有陣列元素
