사용하지 않는 결과값

사용하지 않는 결과값 (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();
}

더 알아보기