late_final_local_already_assigned 진단: late final 지역 변수 재할당 문제

late_final_local_already_assigned 진단: late final 지역 변수 재할당 문제

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

출처: The late final local variable is already assigned.

본문

latefinal 둘 다로 표시된 지역 변수에 이미 값을 할당한 다음, 또 다시 할당을 시도하는 지점에서 분석기가 이 진단을 만들어요.

설명

분석기가 late이면서 동시에 final로 선언된 지역 변수에 값이 이미 할당된 이후, 또 다른 할당이 일어나는 지점을 증명할 수 있으면 이 진단을 만들어요. final 변수는 딱 한 번만 할당할 수 있으니까, 그 이후의 할당은 반드시 실패할 수밖에 없어요. 그래서 이렇게 표시를 해 주는 거예요.

예시

다음 코드는 final 변수 v에 두 군데에서 값을 할당하기 때문에 이 진단을 만들어요.

int f() {
  late final int v;
  v = 0;
  v += 1;
  return v;
}

흔한 해결 방법

변수를 다시 할당할 수 있어야 한다면 final 키워드를 제거하면 돼요.

int f() {
  late int v;
  v = 0;
  v += 1;
  return v;
}

변수를 다시 할당할 필요가 없다면, 첫 번째 할당을 제외한 나머지 할당을 모두 제거하면 돼요.

int f() {
  late final int v;
  v = 0;
  return v;
}

더 알아보기