pattern_variable_assignment_inside_guard — guard 안에서 패턴 변수에 할당할 수 없어요
pattern_variable_assignment_inside_guard — guard 안에서 패턴 변수에 할당할 수 없어요
Dart 분석기(analyzer)가 만들어내는 pattern_variable_assignment_inside_guard 진단에 대한 설명이에요.
본문
이 진단이 나오면 터미널에는 다음과 같은 메시지가 떠요.
Pattern variables can't be assigned inside the guard of the enclosing guarded pattern.
즉, 패턴 변수는 그것을 감싸는 가드(guard) 패턴의 guard 안에서 값을 할당받을 수 없다는 뜻이에요.
언제 발생하나요?
패턴 변수가 when 절 안에서 값을 할당받을 때 분석기가 이 진단을 만들어요.
예시
다음 코드는 변수 a가 guard 절 안에서 값을 할당받고 있어서 이 진단이 생겨요.
void f(int x) {
if (x case var a when (a = 1) > 0) {
print(a);
}
}
어떻게 고치나요?
guard 안에서 값을 담아 둘 필요가 있다면, 그 값을 다른 변수에 할당하면 돼요.
void f(int x) {
var b = 0;
if (x case var a when (b = 1) > 0) {
print(a + b);
}
}
guard 안에 굳이 값을 담아 둘 게 없다면, 아예 할당을 제거해 버리면 돼요.
void f(int x) {
if (x case var a when 1 > 0) {
print(a);
}
}
더 알아보기
- 패턴 문서 — 가드 패턴(guarded pattern)과
when절에 대해 더 자세히 볼 수 있어요.