我想在 Dart 中做这样的事情
enum Result {
dns,
dnf,
dnq,
finish,
active;
get description {
switch(this){
case dns: return 'Not Started';
case dnf: return 'Disqualified';
case dnq: return 'Disqualified';
case finish: return 'Finished';
case active: return 'Underway';
}
}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码有效,但我对开关感到困扰。我有一种直觉,应该有一种方法可以在没有开关的情况下做到这一点——也许可以用地图?但我不知道怎么做。
我试过这个
enum Result {
dns,
dnf,
dnq,
finish,
active;
final Map _description = {
dns: 'Not Started',
dnf: 'Disqualified',
dnq: 'Disqualified',
finish: 'Finished',
active: 'Underway'
};
get description => _description[this];
}
Run Code Online (Sandbox Code Playgroud)
但这显然行不通,因为 dart 说 _description “取决于它自己”。我不明白它如何比带有开关的版本更依赖于自身 - 但是,嘿,编译器是这么说的。这是一个飞镖错误,还是我错过了什么?有没有更好的方法来创建具有辅助吸气剂的枚举?
如果有一种方法不需要输入枚举标识符两次并且必须保持副本对齐,那就太好了——就像面向对象的方法一样。