是否可以直接使用列舉建構式?
void main() {
print(Test(1));
}
enum Test {
test1(1),
test2(2);
final int id;
const Test(this.id);
}
這將給出以下錯誤:
生成列舉建構式只能用作重定向目標
我知道可以這樣解決:
enum Test {
test1(1),
test2(2);
final int id;
const Test(this.id);
factory Test.fromId(int id) {
return values.firstWhere((e) => e.id == id);
}
}
不過感覺總有辦法避開這個鍋爐板廠吧?
uj5u.com熱心網友回復:
我認為沒有比那家工廠更簡單的方法了。我個人的觀點也是,它真的不是樣板,但這是主觀的。
我能想到為什么沒有更簡單的方法的一個原因是因為id在你的情況下不是唯一的,這是完全有效的:
enum Test {
test1(1),
secondtest1(1),
test2(2);
final int id;
const Test(this.id);
factory Test.fromId(int id) {
return values.firstWhere((e) => e.id == id);
}
}
現在您將永遠無法secondtest1使用fromId
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/487758.html
