带枚举的dart开关案例中缺少case子句错误

内拉杰

我为枚举编写了这个简单的开关案例:

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章