equal_keys_in_const_map 진단: 상수 Map 리터럴에 같은 키가 중복될 때

equal_keys_in_const_map 진단: 상수 Map 리터럴에 같은 키가 중복될 때

Dart 분석기가 내보내는 진단에는 이름이 있어요. equal_keys_in_const_map상수 Map 리터럴에 있는 키가 같은 Map의 이전 키와 같을 때 분석기가 알려주는 컴파일 타임 진단이에요. 상수 Map 리터럴의 두 키는 같을 수 없어요.

출처: equal_keys_in_const_map

본문

설명

상수 Map의 어떤 키가 같은 Map의 이전 키와 같으면 분석기가 이 진단을 만들어요. 두 키가 같으면 두 번째 값이 첫 번째 값을 덮어써서, 두 쌍을 모두 두는 것이 의미가 없어져요.

아래 코드는 키 1이 두 번 사용되므로 이 진단이 나와요.

const map = <int, String>{1: 'a', 2: 'b', 1: 'c', 4: 'd'};

흔한 해결 방법

두 항목을 모두 Map에 포함해야 한다면, 키 중 하나를 다른 값으로 바꿔요.

const map = <int, String>{1: 'a', 2: 'b', 3: 'c', 4: 'd'};

항목 중 하나만 필요하다면, 필요 없는 것을 제거해요.

const map = <int, String>{1: 'a', 2: 'b', 4: 'd'};

리터럴 Map은 항목의 순서를 유지한다는 점에 주의해요. 어느 항목을 제거하느냐에 따라 iterator가 키와 값을 돌려주는 순서가 달라질 수 있어요.

더 알아보기