代码之家  ›  专栏  ›  技术社区  ›  Harsh Bhikadia

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

  •  1
  • Harsh Bhikadia  · 技术社区  · 7 年前

    我试过:

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

    但它不起作用。

    有办法吗?

    1 回复  |  直到 7 年前
        1
  •  4
  •   Günter Zöchbauer    7 年前

    这也许对你有用

    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]);
    }