在枚举2中将枚举类型作为参数传递

问题描述 投票:1回答:1

就像传递类类型作为方法的参数一样,我想传递枚举,因为我想写一个对枚举进行操作的通用方法。

我试过了:

  void foo(E):
    print(E.values[0])

但它不起作用。

有办法吗?

enums dart
1个回答
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]);
}
© www.soinside.com 2019 - 2024. All rights reserved.