pattern_assignment_not_local_variable — 패턴 할당은 지역 변수에만 가능해요

pattern_assignment_not_local_variable — 패턴 할당은 지역 변수에만 가능해요

Dart 분석기(analyzer)가 만들어내는 pattern_assignment_not_local_variable 진단에 대한 설명이에요.

출처: pattern_assignment_not_local_variable

본문

이 진단이 나오면 터미널에는 다음과 같은 메시지가 떠요.

Only local variables can be assigned in pattern assignments.

즉, 패턴 할당에서는 지역 변수에만 값을 할당할 수 있다는 뜻이에요.

언제 발생하나요?

패턴 할당이 지역 변수가 아닌 다른 대상에 값을 할당할 때 분석기가 이 진단을 만들어요. 패턴은 필드(field)나 최상위 변수(top-level variable)에는 할당할 수 없어요.

예시와 고치는 방법

패턴으로 구조 분해(destructuring)하면 코드가 더 깔끔해지는 경우라면, 패턴 선언에서 값을 지역 변수에 할당하고, 지역 변수가 아닌 대상은 따로 할당하도록 다시 쓰면 돼요.

class C {
  var x = 0;

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

패턴 할당을 아예 쓰지 않는 쪽이 더 깔끔하다면, 패턴 할당 없이도 똑같은 동작을 하도록 다시 쓸 수도 있어요.

class C {
  var x = 0;

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

정리하면, 패턴으로 값을 뽑아낼 자체는 지역 변수로 하고, 그 바깥의 변수는 별도 대입으로 처리하는 게 핵심이에요.

더 알아보기

  • 패턴 문서 — 패턴 선언과 패턴 할당에 대해 더 자세히 볼 수 있어요.