我能找到的唯一设置枚举值的方法是这个: 在Dart中向枚举添加方法或值
但是,我觉得这有点繁琐。 有更好的方法吗?
在 C#
中,我只需简单地执行以下操作:
enum ErrorCode
{
None = 0,
Unknown = 1,
ConnectionLost = 100,
OutlierReading = 200
}
我能找到的唯一设置枚举值的方法是这个: 在Dart中向枚举添加方法或值
但是,我觉得这有点繁琐。 有更好的方法吗?
在 C#
中,我只需简单地执行以下操作:
enum ErrorCode
{
None = 0,
Unknown = 1,
ConnectionLost = 100,
OutlierReading = 200
}
下面是一个简单的示例
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];
}
enum ErrorCode {
None(0),
Unknown(1),
ConnectionLost(100),
OutlierReading(200);
const ErrorCode(this.code);
final int code;
}
print(ErrorCode.None.code);
print(ErrorCode.Unknown.code);
print(ErrorCode.ConnectionLost.code);
print(ErrorCode.OutlierReading.code);
enum ErrorCode {
None(0),
Unknown(1),
ConnectionLost(100),
OutlierReading(200);
final int value;
const ErrorCode(this.value);
}
该功能尚未发布(请注意,有几个问题尚未解决),但可以通过传递--enable-experiment=enhanced-enums
来使用适当新鲜的工具版本进行实验。
结果是ErrorCode
是一个枚举声明,有四个值ErrorCode.None
,ErrorCode.Unknown
等等,我们有ErrorCode.None.value == 0
和ErrorCode.Unknown.value == 1
等等。目前的最新版本在常见的前端处理此示例(因此dart
和dart2js
将处理它),但分析器尚未处理。
enum ErrorCode {
none(0),
unknown(1),
connectionLost(100),
outlierReading(200);
final int value;
const ErrorCode(this.value);
}
const c1 = ErrorCode.none;
const c2 = ErrorCode.none.value; // 错误,不是一个常量值。
请查看https://github.com/dart-lang/language/issues/2780以获取有关此主题的进一步讨论。 - Erik Ernstclass ErrorCode {
final int code;
const ErrorCode._(this.code);
static const ErrorCode None = ErrorCode._(0);
static const ErrorCode Unknown = ErrorCode._(1);
static const ErrorCode ConnectionLost = ErrorCode._(100);
static const ErrorCode OutlierReading = ErrorCode._(200);
}
var a = ErrorCode.ConnectionLost;
print(a.code);