컴파일 타임 상수가 자기 자신에 의존

컴파일 타임 상수가 자기 자신에 의존 (recursive_compile_time_constant)

이 문서는 Dart 분석기(analyzer)가 내는 recursive_compile_time_constant 진단(diagnostic)을 설명하는 문서예요. 컴파일 타임 상수의 값을 계산하는 과정이 결국 자기 자신을 다시 참조하게 되면, 무한 루프에 빠지는데요. 언제 이런 일이 생기고 어떻게 고치는지 함께 볼게요.

출처: recursive_compile_time_constant

본문

진단 메시지

The compile-time constant expression depends on itself.

컴파일 타임 상수 표현식이 자기 자신에 의존하고 있어요.

설명

분석기는 어떤 컴파일 타임 상수의 값이 직접 또는 간접적으로 자기 자신을 기준으로 정의될 때 이 진단을 만들어 내요. 그렇게 되면 값을 계산하는 과정이 계속 자기 자신을 참조하면서 끝나지 않는 무한 루프가 생겨요.

예시

다음 코드는 두 상수가 서로를 기준으로 정의돼서 이 진단을 두 번 만들어 내요.

const secondsPerHour = minutesPerHour * 60;
const minutesPerHour = secondsPerHour / 60;

일반적인 해결 방법

두 상수가 서로를 물고 도는 걸 고리라고 하는데요. 이 고리를 끊으려면 두 상수 중 적어도 하나는 다른 방식으로 값을 정의하면 돼요.

const secondsPerHour = minutesPerHour * 60;
const minutesPerHour = 60;

더 알아보기