就像将类类型作为参数传递给方法一样,我想传递枚举,就像我想编写一个对枚举进行操作的通用方法一样。
我尝试过:
void foo(E):
print(E.values[0])
但它不起作用。
有办法吗?
答案 0 :(得分:1)
这可能对您有用
typedef EnumValues<T> = List<T> Function();
void main() {
foo<E1>(() => E1.values);
foo<E2>(() => E2.values);
}
enum E1 { a, b }
enum E2 { c, d }
void foo<T>(EnumValues<T> valuesFn) {
var values = valuesFn();
for (var v in values) {
print(v);
}
}
查看评论-较短的版本
void main() {
foo<E1>(E1.values);
foo<E2>(E2.values);
}
enum E1 { a, b }
enum E2 { c, d }
void foo<T>(List<T> values) {
for (var v in values) {
print(v);
}
print(values[0]);
}