pattern_assignment_not_local_variable — 패턴 할당은 지역 변수에만 가능해요
pattern_assignment_not_local_variable — 패턴 할당은 지역 변수에만 가능해요
Dart 분석기(analyzer)가 만들어내는 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;
}
}
정리하면, 패턴으로 값을 뽑아낼 자체는 지역 변수로 하고, 그 바깥의 변수는 별도 대입으로 처리하는 게 핵심이에요.
더 알아보기
- 패턴 문서 — 패턴 선언과 패턴 할당에 대해 더 자세히 볼 수 있어요.