Dart :: Function 2

JaeHwan·2023년 2월 9일
0

Dart

목록 보기
4/6

typedef와 함수

typedef 키워드는 함수의 시그니처를 정의하는 값으로 보면 된다.
여기서 시그니처는 반환 값 타입, 매개변수 개수와 타입 등을 말한다.
즉 함수 선언부를 정의하는 키워드이다. 함수가 무슨 동작을 하는지에 대한 로직은 없다.

typedef Operation = void Function(int x, int y);

함수를 선언하기는 했지만 그 함수에대한 로직이 없다.

void add(int x, int y) {
	return ('결과값 : ${x + y}');
}

void subtract(int x, int y) {
	return ('결과값 : ${x - y}');
}

void main() {
	// typedef 는 일반적인 변수의 type 처럼 사용가능하다.
	Operation oper = add;
    oper(1,2);
    
    // subtract() 함수도 Operation에 해당되는 시그니처이므로 oper에 저장 가능하다.
    oper = subtract;
    oper(1,2);
}

다트에서 함수는 일급 객체(First-class cirizen)이므로 함수를 값처럼 사용할 수 있다.
그래서 플러터에서는 typedef(으)로 선언한 함수를 다음과 같이 매개변수로 넣어 사용한다.

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

void main() {
	calculate(1, 2, add); // 결괏값: 3
}

calculate() 함수의 3번째 매개변수로 add() 함수를 넣은 결괏값이다.

profile
Flutter를 사랑하는 근데 이제 백엔드를 곁들인

0개의 댓글

관련 채용 정보