더북(TheBook)

61.3 고차 함수

함수 자체를 매개변수 또는 반환값으로 가지는 함수를 고차 함수(higher-order function)라고 합니다. 고차 함수는 함수 자체를 데이터로 봅니다.

다음 이어지는 함수 예제 4개에서 고차 함수의 네 가지 유형을 정리해 봅시다. 따로 설명하지 않고, 함수를 생성하고 호출하는 단계로 한 번씩 실행해 보겠습니다.

> //① 매개변수가 Action<T>
> static void FunctionParameterWithAction(Action<string> action, string message)
. {
.     action(message);
. }
>
> //ⓐ Action<T> 매개변수 전달: 문자열을 받아 출력하는 함수 정의
> Action<string> action = message => Console.WriteLine(message);
> FunctionParameterWithAction(action, "고차 함수 : 매개변수");
고차 함수 : 매개변수
>
> //② 매개변수가 Func<T>
> static void FunctionParameterWithFunc(Func<int, int> func, int number)
. {
.     int result = func(number);
.     Console.WriteLine($"{number} * {number} = {result}");
. }
>
> //ⓑ Func<T> 매개변수 전달: 정수 값을 받아 두 번 곱한 후 다시 정수 값 반환
> Func<int, int> func = x => x * x;
> FunctionParameterWithFunc(func, 3);
3 * 3 = 9
>
> //③ 반환값이 Action<T>
> static Action<string> FunctionReturnValueWithAction() =>
.     msg => Console.WriteLine($"{msg}");
>
> //ⓒ Action<T> 반환값
> FunctionReturnValueWithAction()("고차 함수 : 반환값");
고차 함수 : 반환값
>
> //④ 반환값이 Func<T>
> static Func<int, int> FunctionReturnValueWithFunc() => x => x * x;
>
> //ⓓ Func<T> 반환값
> int number = 3;
> int result = FunctionReturnValueWithFunc()(number);
> Console.WriteLine($"{number} * {number} = {result}");
3 * 3 = 9
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.