const 생성자의 인자는 반드시 상수 표현식이어야 해요
const 생성자의 인자는 반드시 상수 표현식이어야 해요
const 생성자를 호출할 때 넘기는 인자가 상수 표현식이 아닐 때 분석기가 이 진단을 띄워줘요.
출처: Arguments of a constant creation must be constant expressions
본문
분석기는 const 생성자를 상수 표현식이 아닌 인자와 함께 호출할 때 이 진단을 만들어요. const로 만들겠다는 건 컴파일 시점에 값이 확정된다는 뜻이니, 인자도 컴파일 시점에 값을 알 수 있는 상수여야 해요.
다음 코드는 i가 상수가 아니라서 이 진단이 나와요.
class C {
final int i;
const C(this.i);
}
C f(int i) => const C(i);
고치는 방법
모든 인자를 상수 표현식으로 만들거나, const 키워드를 빼서 생성자의 비상수 형태를 쓰면 돼요.
class C {
final int i;
const C(this.i);
}
C f(int i) => C(i);