instance_member_access_from_factory 진단: factory 생성자에서 인스턴스 멤버 접근

instance_member_access_from_factory 진단: factory 생성자에서 인스턴스 멤버 접근

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

출처: 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);
}

더 알아보기