초기화가 보장되지 않는 final 변수를 읽을 때
초기화가 보장되지 않는 final 변수를 읽을 때 (read_potentially_unassigned_final)
선언 시점에 초기화되지 않은 final 변수는, 읽는 시점에 값이 항상 할당되어 있다는 게 보장되지 않으면 읽을 수 없어요. 이 진단은 그 상황을 알려줘요.
본문
Dart 분석기(analyzer)는 final 지역 변수(local variable)가 선언 시점에 초기화되지 않았는데, 그 변수가 참조되기 전에 항상 초기화된다는 것을 컴파일러가 증명할 수 없는 지점에서 그 변수를 읽을 때 이 진단을 내요.
예시
아래 코드는 final 지역 변수 x가 아직 초기화되지 않았을 수도 있는데(3번 줄) 그걸 읽어서 이 진단이 발생해요.
int f() {
final int x;
return x;
}
일반적인 해결 방법
변수를 읽기 전에 반드시 초기화되도록 해 주면 돼요. 아래처럼 모든 분기에서 값을 할당하면 되죠.
int f(bool b) {
final int x;
if (b) {
x = 0;
} else {
x = 1;
}
return x;
}
더 알아보기
- Dart 분석기 진단 목록: 이 진단을 포함한 모든 분석기 진단을 볼 수 있어요.
- Dart 언어: 변수:
final변수가 어떻게 동작하는지 배울 수 있어요.