我为枚举编写了这个简单的开关案例:
enum Operation {
CREATE,
UPDATE,
DELETE,
READ
}
...
void check(Operation op) {
switch(op) { // dart complains here
case Operation.CREATE:
insert();
break;
case Operation.UPDATE:
update();
break;
case Operation.DELETE:
delete();
break;
}
它在switch(op)
行抱怨此错误:
错误:“读取”的缺少大小写子句。尝试为缺少的常量添加case子句,或添加默认常量。
如果我按照建议进行操作并添加READ
大小写或default
大小写,它会得到解决。但是我的问题是:为什么会这样呢?为什么我不能遗漏一个案件?如果我不想在这里检查该怎么办?我检查了dart language docs,它说:
您可以在switch语句中使用枚举,如果不处理所有枚举的值,则会收到警告
但是就我而言,这绝对是错误,而不是警告。我正在使用dart开发Flutter应用程序(如果有所作为)。
是这样,您被迫显式处理所有用例,这将导致更少的错误。您将需要添加一个default
,它等效于“当null或任何意外的枚举值时”,或显式列出所有剩余的枚举值。