세터가 없는 final 필드에 값 할당
세터가 없는 final 필드에 값 할당 (assignment_to_final_no_setter)
이 문서는 Dart 분석기(analyzer)가 만들어 내는 assignment_to_final_no_setter 진단(diagnostic)에 대한 상세한 내용을 설명하는 문서예요. 세터에 대한 참조를 발견했는데 해당 타입에는 세터가 없고, 대신 같은 이름의 getter만 정의되어 있을 때 분석기가 이 진단을 알려 줘요. 어떤 상황에서 발생하고 어떻게 고치는지 함께 알아볼게요.
본문
진단 메시지
There isn't a setter named '{0}' in class '{1}'.
클래스 '{1}'에 '{0}'이라는 이름의 세터(setter)가 없어요.
설명
분석기는 세터에 대한 참조를 발견했는데, 해당 타입에 정의된 세터가 없고 같은 이름의 getter만 정의되어 있을 때 이 진단을 만들어 내요. getter만 있는 멤버에는 값을 할당할 수 없으니까요.
예시
다음 코드는 C에 x라는 이름의 세터는 없고 getter만 있기 때문에 이 진단을 만들어 내요.
class C {
int get x => 0;
set y(int p) {}
}
void f(C c) {
c.x = 1;
}
일반적인 해결 방법
기존에 있는 세터를 호출하고 싶다면, 이름을 올바르게 고쳐 주세요.
class C {
int get x => 0;
set y(int p) {}
}
void f(C c) {
c.y = 1;
}
세터를 호출하고 싶은데 아직 없을 뿐이라면, 세터를 선언해 주세요.
class C {
int get x => 0;
set x(int p) {}
set y(int p) {}
}
void f(C c) {
c.x = 1;
}
더 알아보기
- Dart 분석기 진단 목록에서 다른 진단들도 함께 살펴보세요.
- getter와 setter에 대한 더 자세한 내용은 Dart 언어 메서드 문서를 참고해요.