无夜之*_*之星辰 12 enums dart flutter
在 Swift 中,您可以轻松地将原始值分配给枚举,例如:
enum Game: Int {
case lol = 1
case dnf = 2
case dota = 3
}
Run Code Online (Sandbox Code Playgroud)
但是,您不能将原始值分配给 Dart 中的枚举:
enum Game {
lol = 1,
dnf = 2,
dota = 3,
}
Run Code Online (Sandbox Code Playgroud)
它显示错误,你只能使用最简单的枚举:
enum Game {
lol,
dnf,
dota,
}
Run Code Online (Sandbox Code Playgroud)
实在是让我很失望。
有什么办法可以像 Swift 一样将原始值分配给 Dart 的枚举吗?
jit*_*555 18
Dart 2.17支持增强枚举
enum Game {
lol(1),
dnf(2),
dota(3);
const Game(this.value);
final int value;
}
Run Code Online (Sandbox Code Playgroud)
像这样使用它:
void main() {
const game = Game.lol;
print(game.value); // 1
}
Run Code Online (Sandbox Code Playgroud)
Dart 中有一个即将推出的功能,称为增强枚举,它允许使用类中已知的许多功能进行枚举声明。例如:
enum Game {
lol,
dnf,
dota;
int get intValue => index + 1;
}
Run Code Online (Sandbox Code Playgroud)
该功能尚未发布(请注意,有几件事尚未工作),但可以通过传递 来使用适当的新版本工具进行实验--enable-experiment=enhanced-enums。
结果是 type 的枚举值Game将有一个 getterintValue返回int问题中提到的值,因此print(myGame.intValue)将打印 1、2 或 3。
| 归档时间: |
|
| 查看次数: |
6679 次 |
| 最近记录: |