non_exhaustive_switch_expression
类型 '{0}' 没有被 switch 的所有分支完整匹配,因为它没有匹配 '{1}'。
描述
#当一个 switch
表达式缺少一个或多个可能的值的分支时,分析器会生成此诊断。
示例
#以下代码会生成此诊断,因为 switch 表达式没有针对值 E.three
的分支。
dart
enum E { one, two, three }
String f(E e) => switch (e) {
E.one => 'one',
E.two => 'two',
};
常见修复
#如果缺少的值对于 switch 表达式具有明显的意义,则为每个缺少匹配的值添加一个分支。
dart
enum E { one, two, three }
String f(E e) => switch (e) {
E.one => 'one',
E.two => 'two',
E.three => 'three',
};
如果缺少的值不需要匹配,则添加一个通配符模式,该模式返回一个简单的默认值。
dart
enum E { one, two, three }
String f(E e) => switch (e) {
E.one => 'one',
E.two => 'two',
_ => 'unknown',
};
请注意,通配符模式将处理将来添加到类型中的任何值。如果 switch
需要更新以处理新添加的类型,你将失去编译器对此发出警告的能力。