Nee*_*raj 5 enums switch-statement dart flutter
我为枚举编写了这个简单的开关案例:
\n\nenum Operation {\n CREATE,\n UPDATE,\n DELETE,\n READ\n}\nRun Code Online (Sandbox Code Playgroud)\n\n...
\n\nvoid check(Operation op) {\n switch(op) { // dart complains here\n case Operation.CREATE:\n insert();\n break;\n case Operation.UPDATE:\n update();\n break;\n case Operation.DELETE:\n delete();\n break;\n}\nRun Code Online (Sandbox Code Playgroud)\n\n它在该行抱怨此错误switch(op):
\n\n\n错误:缺少“READ”的 case 子句。
\n
\n 尝试为缺少的常量添加 case 子句,或添加默认常量。
如果我按照建议添加一个READ或多个案例,它就会得到修复default。
\n但我的问题是:为什么会这样?为什么我不能遗漏一个案例?如果我不想在这里检查该案例怎么办?我检查了dart 语言文档,上面写着:
\n\n\n您可以在 switch 语句中使用枚举,如果您不处理所有 enum\xe2\x80\x99s 值,\xe2\x80\x99 将收到警告
\n
但就我而言,这绝对是一个错误而不是警告。 \n我正在使用 dart 来开发 flutter 应用程序(如果这有什么不同的话)。
\n这样您就被迫显式处理所有用例,从而减少错误。您需要添加一个default相当于“当 null 或任何意外的枚举值”的值,或者显式列出所有剩余的枚举值。
最好的例子是,当您在创建该枚举几个月后向现有枚举添加新值时,然后您无法编译应用程序,直到将该新值添加到该类型的所有 switch case 中(除非它们在这种情况下default使用它们已经被处理了)。
| 归档时间: |
|
| 查看次数: |
4146 次 |
| 最近记录: |