我想在达特做这样的事情
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';
}
}
}
上面的代码可以工作,但是我被开关所困扰。我有一种直觉,应该有一种方法可以不用开关来完成这件事--也许用一个Map?但是我不知道怎么做。
我试过这个
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];
}
但显然这行不通,因为dart说_description“依赖于自身”。我看不出它对自身的依赖程度比带开关的版本更高--但是,嘿,编译器是这么说的。这是dart的bug,还是我遗漏了什么?有没有更好的方法来创建具有辅助getter的枚举?
如果有一种方法不需要键入两次枚举标识符,也不需要保持副本对齐,那就太好了--就像OO方法一样。
1条答案
按热度按时间s8vozzvw1#
你可以这样做: