【问题标题】:How to set associated constant values of enum members in Dart?如何在 Dart 中设置枚举成员的关联常量值?
【发布时间】:2022-01-26 20:32:49
【问题描述】:

我能找到设置枚举值的唯一方法是: Add methods or values to enum in dart

但是,我觉得它有点乏味。 有没有更好的办法?

C# 我可以简单地做这样的事情:

enum ErrorCode
{
    None = 0,
    Unknown = 1,
    ConnectionLost = 100,
    OutlierReading = 200
}

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    这是一个简单的例子

    enum ErrorCode {
      None,
      Unknown,
      ConnectionLost,
      OutlierReading,
    }
    
    extension ErrorCodeExtention on ErrorCode {
      static final values = {
        ErrorCode.None: 0,
        ErrorCode.Unknown: 1,
        ErrorCode.ConnectionLost: 100,
        ErrorCode.OutlierReading: 200,
      };
    
      int? get value => values[this];
    }
    

    【讨论】:

    • 稍微短一点,谢谢,不过我觉得这种方式还是有点乏味。
    【解决方案2】:

    Dart 中有一个即将推出的功能,称为增强枚举,它允许使用类中已知的许多功能进行枚举声明。例如:

    enum ErrorCode {
        None(0),
        Unknown(1),
        ConnectionLost(100),
        OutlierReading(200);
      final int value;
      const ErrorCode(this.value);
    }
    

    该功能尚未发布(请注意,有几件事尚未生效),但可以通过传递--enable-experiment=enhanced-enums 使用适当的新版本工具进行实验。

    结果是ErrorCode是一个枚举声明,有四个值ErrorCode.NoneErrorCode.Unknown等等,我们有ErrorCode.None.value == 0ErrorCode.Unknown.value == 1等等。当前的前沿在公共前端处理这个例子(所以dartdart2js 会处理它),但它还没有被分析器处理。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-04
      • 1970-01-01
      • 2013-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-16
      • 1970-01-01
      相关资源
      最近更新 更多