iterable로 Map을 만들 때는 for 요소를 써요
iterable로 Map을 만들 때는 for 요소를 써요
prefer_for_elements_to_map_fromIterable 린트 규칙은 iterable에서 Map을 만들 때는 fromIterable보다 for 요소(for elements)를 쓰라고 권하는 규칙이에요. Stable 상태이고 공식 추천(Recommended) 규칙이며 자동 수정도 가능해요.
본문
iterable로 Map을 만들 때는 for 요소를 쓰는 게 좋아요. for 요소를 쓰면 여러 가지 이점이 있는데요.
- 성능(Performance)
- 유연성(Flexibility)
- 가독성(Readability)
- 향상된 타입 추론(Improved type inference)
- null safety와의 더 나은 상호작용(Improved interaction with null safety)
BAD — Map.fromIterable로 key와 value 함수를 따로 넘겨줬어요.
Map<String, WidgetBuilder>.fromIterable(
kAllGalleryDemos,
key: (demo) => '${demo.routeName}',
value: (demo) => demo.buildRoute,
);
GOOD — for 요소로 바로 map 리터럴을 만들어요.
return {
for (var demo in kAllGalleryDemos)
'${demo.routeName}': demo.buildRoute,
};
GOOD — 타입은 자동으로 추론돼요.
// Map<int, Student>은 명시할 필요 없이 타입이 자동으로 추론돼요.
final pizzaRecipients = {
...studentLeaders,
for (var student in classG)
if (student.isPassing) student.id: student,
};
규칙 켜기
analysis_options.yaml 파일의 linter > rules 아래에 prefer_for_elements_to_map_fromIterable를 추가하면 돼요.
linter:
rules:
- prefer_for_elements_to_map_fromIterable
YAML 맵 문법으로 설정한다면 이렇게 써요.
linter:
rules:
prefer_for_elements_to_map_fromIterable: true
더 알아보기
for요소는 map 리터럴 안에서 key-value 쌍을 반복해 만들어 주는 문법이에요.