instance_member_access_from_factory 진단: factory 생성자에서 인스턴스 멤버 접근
instance_member_access_from_factory 진단: factory 생성자에서 인스턴스 멤버 접근
Dart 분석기가 만들어 내는 instance_member_access_from_factory 진단에 대한 설명이에요.
본문
인스턴스 멤버는 factory 생성자에서 접근할 수 없어요.
설명
분석기는 factory 생성자가 인스턴스 멤버에 대한 한정되지 않은(unqualified) 참조를 포함할 때 이 진단을 만들어요.
생성(constructive) 생성자에서는 생성자의 본문이 실행되기 전에 클래스의 인스턴스가 만들어지고 초기화되기 때문에, 그 인스턴스를 this에 묶어서 인스턴스 메서드에서 사용하듯이 접근할 수 있어요. 하지만 factory 생성자에서는 본문을 실행하기 전에 인스턴스가 만들어지지 않기 때문에, this로 그 값을 참조할 수 없어요.
예시
다음 코드는 x가 factory 생성자 안에서 스코프(scope)에 없기 때문에 이 진단을 만들어요.
class C {
int x;
factory C() {
return C._(x);
}
C._(this.x);
}
흔한 해결 방법
인스턴스 멤버를 참조하지 않도록 코드를 다시 작성해요.
class C {
int x;
factory C() {
return C._(0);
}
C._(this.x);
}