我为枚举编写了这个简单的开关案例:
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语言文档,该文档显示:
您可以在switch语句中使用枚举,如果不处理所有枚举值,则会收到警告
但就我而言,这绝对是错误,而不是警告。我正在使用dart开发flutter应用程序(如果有所作为)。
这样一来,您就不得不显式地处理所有用例,这将导致更少的错误。您将需要添加default
与“当null或任何意外的枚举值时”等效的a ,或显式列出所有剩余的枚举值。
最好的例子是,在创建该枚举数月后,向现有枚举添加新值,然后才能编译该应用程序,除非将该新值添加到该类型的所有切换用例中(除非default
在这种情况下使用了它们)他们已经被处理)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句