跳到主要內容

pattern_assignment_not_local_variable

模式賦值只能對區域性變數進行賦值。

描述

#

當模式賦值(pattern assignment)將值賦給非區域性變數時,分析器會產生此診斷。模式不能賦給欄位或頂層變數。

示例

#

如果使用模式解構能使程式碼更清晰,那麼重寫程式碼,在模式宣告中將值賦給區域性變數,然後單獨賦給非區域性變數。

dart
class C {
  var x = 0;

  void f((int, int) r) {
    (x, _) = r;
  }
}

常見修復

#

如果使用模式賦值能使程式碼更清晰,那麼重寫程式碼,將值賦給區域性變數,然後單獨賦給非區域性變數。

dart
class C {
  var x = 0;

  void f((int, int) r) {
    var (a, _) = r;
    x = a;
  }
}

如果不用模式賦值程式碼更清晰,那麼重寫程式碼以不使用模式賦值。

dart
class C {
  var x = 0;

  void f((int, int) r) {
    x = r.$1;
  }
}