implicit_call_tearoffs 린트: call 메서드를 암시적으로 때어낼 때

implicit_call_tearoffs 린트: call 메서드를 암시적으로 때어낼 때

Dart 분석기가 내보내는 린트(lint) 규칙에는 이름이 있어요. implicit_call_tearoffscall 메서드를 가진 객체를 함수 타입 변수에 할당하면서 call 메서드를 암시적으로 때어낼(tear off) 때 분석기가 알려주는 린트 규칙이에요. 명시적으로 .call을 붙여서 의도를 분명히 하는 게 좋아요.

출처: implicit_call_tearoffs

본문

설명

분석기는 call 메서드를 가진 객체를 함수 타입 변수에 할당하면서 call 메서드를 암시적으로 때어낼 때 이 진단을 만들어요.

예시

다음 코드는 Callable의 인스턴스가 Function을 기대하는 함수에 전달되기 때문에 이 진단이 나와요.

class Callable {
  void call() {}
}

void callIt(void Function() f) {
  f();
}

void f() {
  callIt(Callable());
}

흔한 해결 방법

call 메서드를 명시적으로 때어내요.

class Callable {
  void call() {}
}

void callIt(void Function() f) {
  f();
}

void f() {
  callIt(Callable().call);
}

더 알아보기