Передача типа enum в качестве аргумента в Dart 2 - PullRequest
0 голосов
/ 03 сентября 2018

Точно так же, как передача типа класса в качестве аргумента методу, я хочу передать enum, так как я хочу написать общий метод, который работает с enum.

Я пытался:

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

но это не работает.

Есть ли способ?

1 Ответ

0 голосов
/ 03 сентября 2018

Это может сработать для вас

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]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...