사용하지 않는 결과값
사용하지 않는 결과값 (unused_result)
이 문서는 Dart 분석기(analyzer)가 만들어 내는 unused_result 진단(diagnostic)에 대해 설명하는 문서예요. 간단히 말하면, useResult로 애너테이션된 함수를 호출했는데 그 함수가 돌려준 값을 사용하지 않을 때 분석기가 이 진단을 알려 줘요.
출처: unused_result
본문
진단 메시지
'{0}' should be used. {1}.
'{0}'은(는) 사용되어야 해요. {1}.
The value of '{0}' should be used.
'{0}'의 값은 사용되어야 해요.
설명
분석기는 useResult로 애너테이션된 함수가 호출됐는데 그 함수가 돌려준 값을 사용하지 않을 때 이 진단을 만들어 내요. 값은 다음과 같은 경우에 사용된 것으로 간주해요.
- 값의 멤버(member)를 호출한 경우
- 값을 다른 함수에 전달한 경우
- 값을 변수나 필드에 할당한 경우
예시
다음 코드는 c.a()의 호출 결과를 사용하지 않기 때문에 이 진단을 만들어 내요. a 메서드가 useResult로 애너테이션돼 있는데도 말이죠.
import 'package:meta/meta.dart';
class C {
@useResult
int a() => 0;
int b() => 0;
}
void f(C c) {
c.a();
}
흔한 해결 방법
애너테이션된 함수를 호출하려는 의도였다면, 돌려받은 값을 사용해요.
import 'package:meta/meta.dart';
class C {
@useResult
int a() => 0;
int b() => 0;
}
void f(C c) {
print(c.a());
}
다른 함수를 호출하려는 의도였다면, 호출하는 함수의 이름을 올바르게 고쳐요.
import 'package:meta/meta.dart';
class C {
@useResult
int a() => 0;
int b() => 0;
}
void f(C c) {
c.b();
}
더 알아보기
- Dart 분석기 진단 목록에서 다른 진단들도 함께 살펴보세요.
useResult애너테이션에 대한 자세한 내용은 package:meta 문서를 참고해요.