반응형

해당 이미지가 저작권에 위배될시 죄송합니다

이번 스터디는 Dart의 typedef다.

Typedef는 Function과 굉장히 밀접하게 연결이 되어있다.

이 Typedef를 사용하면 함수를 미리 시그니처와 해서 여러가지 함수를 유용하게 다룰수 있는 기능을 제공해준다.

바로 소스로 알아보자.

먼저 간단하게 덧셈과 뺄셈을 하는 함수를 정의한다.

void main() { 
	//잘 나오는지 확인
  add(1,2);
  subtract(3,2);
    
}

void add(int x, int y){
  print('x더하기 y는 ${x+y}입니다.');
}

void subtract(int x, int y){
  print('x빼기 y는 ${x-y}입니다.');
}
x더하기 y는 3입니다.
x빼기 y는 1입니다.

 

그리고 이번에는 typedef를 하나 선언해보자.

void main() { 
  add(1,2);
  subtract(3,2);
    
}

void add(int x, int y){
  print('x더하기 y는 ${x+y}입니다.');
}

void subtract(int x, int y){
  print('x빼기 y는 ${x-y}입니다.');
}

typedef Operation(int x, int y);

여기까지만 보면,

함수는 반환타입 또는 void를 지정한 후, 함수명과 파라미터의 구조다.

typedef의 경우도 정의한 형태는 함수와 큰 차이를 보이지 않는다.

유일한 차이로는, 함수의 경우 중괄호 영역을 펼쳐서 수행할 내용을 작성하지만, typedef의 경우 그렇지 않다는 것이다.

그럼 어떻게 사용하는 것일까?

직접 예제로 한번에 활용하자.

(주석의 넘버링된 순서대로 읽어나가면 되겠다.)

void main() { 
  add(1,2);
  subtract(3,2);
    
  print('-----구분선-----');
  
  //1. 변수선언 하듯이, type은 typedef에 선언한 Operation으로 하고,
  //2. 변수명 짓듯이 알아서 짓는다.
  //3. 여기에 할당하는것은 미리 정의해둔 함수를 할당한다.
  Operation oper = add;
  
  //4. 위와 같이 지정한 후, oper을 실행하게 되면?  
  oper(1,2);
  //5. add함수를 호출했던것과 같은 결과를 나타낸다.
  //6. 즉, oper를 호출한다는 것은 -> add를 호출하는것과 같은 것이다.
  
  //7. 반대로 oper에 뺌셈기능을 하는 함수를 정의해주면
  oper = subtract;
  
  oper(3,2);
  //8. subtract함수의 기능을 수행하여, 결과를 표시한다.
  //9. 여기서 주의할 점은, typedef에 정의해둔 것과 사용하려는 함수의 파라미터가 같아야 한다.
  
  
}

void add(int x, int y){
  print('x더하기 y는 ${x+y}입니다.');
}

void subtract(int x, int y){
  print('x빼기 y는 ${x-y}입니다.');
}

typedef Operation(int x, int y);

※즉, typedef를 이용하면 함수들을 변수처럼 사용할 수 있게 만들어 준다.

여기서 드는 의문...그냥 함수를 호출하면 되는것이 아닌가? 굳이 typedef를 사용해야 할까?

유용하게 사용할 수 있는 기능을 예제로 만들어보자.

이번에도 임의 함수를 하나 선언하자.

void calculate(int x, int y, Operation oper){
  oper(x,y);
}

위 calculate라는 함수는 int형의 x,y를 받고 typedef 하나를 받도록 되어있다.

실제 main함수에서 호출해보면,

void main() { 
  calculate(1,2,add);
  calculate(3,2,subtract);    
}

void add(int x, int y){
  print('x더하기 y는 ${x+y}입니다.');
}

void subtract(int x, int y){
  print('x빼기 y는 ${x-y}입니다.');
}

typedef Operation(int x, int y);

void calculate(int x, int y, Operation oper){
  oper(x,y);
}
x더하기 y는 3입니다.
x빼기 y는 1입니다.

함수에 인자로 함수를 넣고, 그 값을 받은 calculate는 첫번째, 인자와 두번째인자를 가지고 세번째 typedef를 실행한다.

여기까지만 봐도 아직 크게 와닿지 않을 수는 있다..나도 그렇지만...

자주는 아니지만 가끔은 쓰일때가 있다고 한다. 일단 알아두도록 하자

나중에 인자로 함수 막 박혀있고 그러면 헷갈리니깐~~

오늘 스터디 typedef끝.

반응형

+ Recent posts