final 필드에 값 할당
final 필드에 값 할당 (assignment_to_final)
이 문서는 Dart 분석기(analyzer)가 만들어 내는 assignment_to_final 진단(diagnostic)에 대한 상세한 내용을 설명하는 문서예요. 세터(setter)를 호출했는데 같은 이름의 필드가 final이나 const로 선언되어 있어 세터가 없을 때 분석기가 이 진단을 알려 줘요. 어떤 상황에서 발생하고 어떻게 고치는지 함께 알아볼게요.
본문
진단 메시지
'{0}' can't be used as a setter because it's final.
'{0}'은(는) final이기 때문에 세터(setter)로 사용할 수 없어요.
설명
분석기는 세터를 호출하는 코드를 발견했는데, 같은 이름의 필드가 final 또는 const로 선언되어 있어 세터가 존재하지 않을 때 이 진단을 만들어 내요. final이나 const 필드에는 값을 할당할 수 없으니까요.
예시
다음 코드는 v가 final이기 때문에 이 진단을 만들어 내요.
class C {
final v = 0;
}
void f(C c) {
c.v = 1;
}
일반적인 해결 방법
필드의 값을 설정할 수 있어야 한다면, 필드에서 final 수식어를 제거해 주세요.
class C {
int v = 0;
}
void f(C c) {
c.v = 1;
}
더 알아보기
- Dart 분석기 진단 목록에서 다른 진단들도 함께 살펴보세요.
final필드에 대한 더 자세한 내용은 Dart 언어 변수 문서를 참고해요.