implicit_this_reference_in_initializer 진단: 초기화식에서 인스턴스 멤버를 쓸 수 없어요
implicit_this_reference_in_initializer 진단: 초기화식에서 인스턴스 멤버를 쓸 수 없어요
생성자의 초기화 리스트(initializer list) 안에서 인스턴스 멤버를 참조하는 코드를 발견하면 Dart 분석기가 이 진단을 내보내요. 생성자가 아직 객체를 완성하기 전이어서, 이 시점에는 this에 접근할 수 없다는 걸 알려주는 거예요.
본문
설명
분석기는 생성자의 초기화 리스트에서 인스턴스 멤버를 참조하는 경우 이 진단을 만들어요.
예시
다음 코드는 defaultX가 인스턴스 멤버이기 때문에 이 진단을 만들어요.
class C {
int x;
C() : x = defaultX;
int get defaultX => 0;
}
흔한 해결 방법
그 멤버를 static으로 만들 수 있다면 그렇게 해요.
class C {
int x;
C() : x = defaultX;
static int get defaultX => 0;
}
그럴 수 없다면, 초기화식에서 그 참조를 인스턴스 멤버를 쓰지 않는 다른 표현식으로 바꿔요.
class C {
int x;
C() : x = 0;
int get defaultX => 0;
}