avoid_function_literals_in_foreach_calls 진단: forEach에 함수 리터럴을 넘기지 말아야 할 때
avoid_function_literals_in_foreach_calls 진단: forEach에 함수 리터럴을 넘기지 말아야 할 때
Dart 분석기가 내보내는 진단에는 이름이 있어요. avoid_function_literals_in_foreach_calls는 Iterable.forEach의 인자로 클로저(closure)를 넘겼을 때 Dart 분석기가 알려주는 린트(lint) 진단이에요. 코드가 돌아가는 데 문제가 생기는 건 아니지만, 더 간결하고 명확하게 쓸 수 있어요.
본문
설명
분석기는 Iterable.forEach의 인자(argument)가 클로저일 때 이 진단을 만들어요.
예시
다음 코드는 forEach를 호출할 때 넘긴 인자가 클로저이기 때문에 이 진단을 만들어요.
void f(Iterable<String> s) {
s.forEach((e) => print(e));
}
흔한 해결 방법
클로저를 tear-off(메서드 참조)로 바꿀 수 있다면 클로저를 대체해요.
void f(Iterable<String> s) {
s.forEach(print);
}
클로저를 tear-off로 바꿀 수 없다면 for 루프를 사용해서 요소를 순회해요.
void f(Iterable<String> s) {
for (var e in s) {
print(e);
}
}