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