컴파일 타임 상수가 자기 자신에 의존
컴파일 타임 상수가 자기 자신에 의존 (recursive_compile_time_constant)
이 문서는 Dart 분석기(analyzer)가 내는 recursive_compile_time_constant 진단(diagnostic)을 설명하는 문서예요. 컴파일 타임 상수의 값을 계산하는 과정이 결국 자기 자신을 다시 참조하게 되면, 무한 루프에 빠지는데요. 언제 이런 일이 생기고 어떻게 고치는지 함께 볼게요.
본문
진단 메시지
The compile-time constant expression depends on itself.
컴파일 타임 상수 표현식이 자기 자신에 의존하고 있어요.
설명
분석기는 어떤 컴파일 타임 상수의 값이 직접 또는 간접적으로 자기 자신을 기준으로 정의될 때 이 진단을 만들어 내요. 그렇게 되면 값을 계산하는 과정이 계속 자기 자신을 참조하면서 끝나지 않는 무한 루프가 생겨요.
예시
다음 코드는 두 상수가 서로를 기준으로 정의돼서 이 진단을 두 번 만들어 내요.
const secondsPerHour = minutesPerHour * 60;
const minutesPerHour = secondsPerHour / 60;
일반적인 해결 방법
두 상수가 서로를 물고 도는 걸 고리라고 하는데요. 이 고리를 끊으려면 두 상수 중 적어도 하나는 다른 방식으로 값을 정의하면 돼요.
const secondsPerHour = minutesPerHour * 60;
const minutesPerHour = 60;
더 알아보기
- Dart 분석기 진단 목록에서 다른 진단들도 함께 살펴보세요.
- 컴파일 타임 상수(const)가 어떤 값들을 가질 수 있는지는 Dart 공식 문서의 상수 문서를 참고해요.