equal_elements_in_set 진단: Set 리터럴에 같은 요소가 중복될 때
equal_elements_in_set 진단: Set 리터럴에 같은 요소가 중복될 때
Dart 분석기가 내보내는 진단에는 이름이 있어요. equal_elements_in_set은 상수가 아닌 Set 리터럴의 어떤 요소가 같은 Set의 이전 요소와 같을 때 분석기가 알려주는 컴파일 타임 진단이에요. Set 리터럴의 두 요소는 같으면 안 돼요.
본문
설명
상수가 아닌 Set의 어떤 요소가 같은 Set의 이전 요소와 같으면 분석기가 이 진단을 만들어요. 두 요소가 같으면 두 번째 값은 무시되는데, 이러면 두 요소를 모두 두는 것이 의미가 없어져서 버그 신호일 가능성이 커요.
아래 코드는 요소 1이 두 번 나타나므로 이 진단이 나와요.
const a = 1;
const b = 1;
var s = <int>{a, b};
흔한 해결 방법
두 요소를 모두 Set에 포함해야 한다면, 요소 중 하나를 바꿔요.
const a = 1;
const b = 2;
var s = <int>{a, b};
요소 중 하나만 필요하다면, 필요 없는 것을 제거해요.
const a = 1;
var s = <int>{a};
리터럴 Set은 요소의 순서를 유지한다는 점에 주의해요. 어느 요소를 제거하느냐에 따라 iterator가 요소를 돌려주는 순서가 달라질 수 있어요.