생성자(constructor)는 값을 반환할 수 없어요
생성자(constructor)는 값을 반환할 수 없어요
return_in_generative_constructor 진단은 Dart 분석기가 생성자(constructive constructor) 안에서 값을 반환하는 return 문을 발견했을 때 알려주는 경고예요. 생성자는 항상 생성된 객체만 돌려줄 수 있으니, 이 오류가 나면 구조를 다시 생각해 보면 돼요.
본문
Dart 분석기는 generative constructor(생성자)가 값을 지정해 반환하는 return 문을 포함하고 있을 때 이 진단을 만들어요. Generative constructor는 항상 생성된 객체 그 자체를 반환하기 때문에, 다른 객체를 반환할 수 없거든요.
예시
아래 코드에서 return 문에 식(expression)이 붙어 있어서 이 진단이 발생해요.
class C {
C() {
return this;
}
}
흔한 해결 방법
생성자가 새 인스턴스를 만들어야 하는 상황이라면, return 문이나 식 중 하나를 제거하면 돼요.
class C {
C();
}
반대로 생성자가 새 인스턴스를 만들지 않아야 한다면, 이 생성자를 factory constructor로 바꿔 주면 돼요.
class C {
factory C() {
return _instance;
}
static final C _instance = C._();
C._();
}
더 알아보기
- Dart 분석기 진단 전체 목록 살펴보기: Dart diagnostics
- 생성자 종류와 factory constructor에 대한 자세한 설명: Dart 클래스 문서