모든 요소에 함수를 적용할 때는 forEach를 써요
모든 요소에 함수를 적용할 때는 forEach를 써요
prefer_foreach 린트 규칙은 iterable의 모든 요소에 함수나 메서드를 적용하기만 할 때는 forEach를 쓰라고 권하는 규칙이에요. Stable 상태이고 자동 수정도 가능해요.
출처: Use forEach to only apply a function to all the elements.
본문
iterable의 모든 요소에 함수나 메서드를 적용하기만 하는 상황이라면 forEach를 쓰세요.
이렇게 하면 코드가 더 간결해지기 때문이에요.
BAD — for 루프로 맵의 키를 순회하며 제거했어요.
for (final key in map.keys.toList()) {
map.remove(key);
}
GOOD — forEach로 한 줄에 정리했어요.
map.keys.toList().forEach(map.remove);
참고: for each 문을 forEach 호출로 바꾸면, iterable 자체에 부작용(side-effect)이 있는 경우 동작이 달라질 수 있어요.
for (final v in myList) {
foo().f(v); // 이 코드는 foo()를 여러 번 호출해요.
}
myList.forEach(foo().f); // 하지만 이 코드는 foo()를 딱 한 번만 호출해요.
규칙 켜기
analysis_options.yaml 파일의 linter > rules 아래에 prefer_foreach를 추가하면 돼요.
linter:
rules:
- prefer_foreach
YAML 맵 문법으로 설정한다면 이렇게 써요.
linter:
rules:
prefer_foreach: true
더 알아보기
- iterable 자체를 수정하는 등 부작용이 있을 땐
forEach로 바꾸는 게 동작을 바꿀 수 있으니 주의해요.