본문 바로가기
Dart

[Dart] 언어 기본기 - Typedef편

by 가드 2022. 12. 9.
728x90

Typedef?

Typedef는 필드 또는 리턴 타입을 사용하는 이름을 함수에 제공해주며 Typedef로 여러 가지 함수를 유용하게 다룰 수 있는 기능을 제공한다. 즉, Typedef를 함수에 변수 파라미터로 제공하여 함수 내부에서 Typedef를 실행될 수 있도록 한다.
말이 어렵다 코드를 직접 보는 편이 낫다.

void main() {
  Operation operation = plus; // Operation plus 함수 선언
  int sum1 = operation(10, 20, 30);
  print(sum1); // 60
  operation = minus; // Operation minus 함수 선언
  int sum2 = operation(10, 20, 30);
  print(sum2); // -40
}

typedef Operation = int Function(int a, int b, int c);

// 더하기 Arrow 함수
int plus(int a, int b, int c) => a + b + c;
// 빼기 Arrow 함수
int minus(int a, int b, int c) => a - b - c;
  • Operation이라는 typedef를 선언하고 리턴되는 Function인 int Function을 선언하고 파라미터로 기존과 동일하게 int a, b, c를 정의한다.
  • typedef에 Function 파라미터와 반환 타입이 동일한 plus, minus 함수를 생성한다. 중요한 점은 typedef를 사용하기 위해서는 Function과 함수와 파라미터와 반환 타입이 동일해야 동작한다.
  • main 함수에 typedef로 정의한 Opertation에 plus 또는 minus 함수를 대입하여 실행하면 더하기 또는 빼기 연산된 반환 값을 받을 수 있다.

계산기를 개발한다고 하면 더하기, 빼기, 곱하기, 나누기 등의 함수가 있어야 하는데 위의 main 함수와 같이 typedef opertaion에 함수를 대입시키고 function을 실행하는 코드를 각각 만드는 것보다 파라미터와 typedef를 받아서 공통으로 처리하는 함수를 만들어서 제어하는 방식으로 사용된다.

void main() {
  print(calculate(10, 20, 30, plus)); // 60
  print(calculate(10, 20, 30, minus)); // -40
}

typedef Operation = int Function(int a, int b, int c);

// 더하기 Arrow 함수
int plus(int a, int b, int c) => a + b + c;
// 빼기 Arrow 함수
int minus(int a, int b, int c) => a - b - c;
// 계산 함수 Arrow 함수
int calculate(int a, int b, int c, Operation operation) => operation(a, b, c);
  • calculate 함수를 생성하고 파라미터로 typedef Operation을 받아서 opertation에 int 타입 a, b, c를 전달하여 연산을 반환하도록 하였다.
  • main 함수에서는 calculate에 plus 또는 minus 함수를 전달하여 결과 값을 얻을 수 있다.
300x250

댓글