跳到主要内容

pattern_variable_assignment_inside_guard

模式变量不能在封闭的受守卫模式的守卫 (guard) 中被赋值。

描述

#

当模式变量在守卫 (guard) (when) 子句中被赋值时,分析器会产生此诊断信息。

示例

#

以下代码会产生此诊断信息,因为变量 a 在守卫 (guard) 子句中被赋值

dart
void f(int x) {
  if (x case var a when (a = 1) > 0) {
    print(a);
  }
}

常见修复

#

如果需要捕获某个值,则将其赋给不同的变量

dart
void f(int x) {
  var b;
  if (x case var a when (b = 1) > 0) {
    print(a + b);
  }
}

如果不需要捕获值,则删除赋值操作

dart
void f(int x) {
  if (x case var a when 1 > 0) {
    print(a);
  }
}