跳到主要內容

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);
  }
}