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
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.