field_initialized_in_parameter_and_initializer 진단: 매개변수 목록과 초기화 리스트에서 동시에 초기화하면 안 돼요
field_initialized_in_parameter_and_initializer 진단: 매개변수 목록과 초기화 리스트에서 동시에 초기화하면 안 돼요
Dart 분석기가 내보내는 진단에는 이름이 있어요. field_initialized_in_parameter_and_initializer은 필드가 생성자의 매개변수 목록에서 초기화되면서 동시에 초기화 리스트에서도 초기화될 때 분석기가 알려주는 진단이에요.
본문
설명
필드가 매개변수 목록(초기화 형식 매개변수, this.f처럼 쓰는 것)에서 초기화되고 생성자의 초기화 리스트에서도 초기화되면 이 진단이 나와요. 한 필드를 두 자리에서 초기화하는 건 허용되지 않아요.
예시
다음 코드는 필드 f를 초기화 형식 매개변수와 초기화 리스트에서 모두 초기화해서 이 진단이 나와요.
class C {
int f;
C(this.f) : f = 0;
}
흔한 해결 방법
필드를 매개변수로 초기화하고 싶다면 초기화 리스트 쪽의 초기화를 빼요.
class C {
int f;
C(this.f);
}
필드를 초기화 리스트에서 초기화하고 매개변수가 필요 없다면 매개변수를 빼요.
class C {
int f;
C() : f = 0;
}
필드를 초기화 리스트에서 초기화하되 매개변수도 필요하다면 일반 매개변수로 바꿔요.
class C {
int f;
C(int g) : f = g * 2;
}