이번에는 Higher-order-function에 대해서 정리해보겠습니다.
Higher-order-function이란 2가지 중 하나이상을 만족하는 함수를 말합니다.
- 함수를 파라미터로 전달 받는 함수
- 함수를 리턴하는 함수
simpleHigherOrderFunction의 파라미터를 살펴보면 sum 이라는 함수 하나와 Int 값 2개를 전달 받습니다. sum파라미터는 Int 값 2개를 전달받아 Int값을 반환하는 함수입니다.
simpleHigherOrderFunction 은 함수를 파라미터로 전달 받았으므로 Higher-order-function 이라고 말 할 수 있습니다.
Higher-order-function… 이름만 들으면 뭔가 어려워보이지만 개념은 매우 간단합니다. 함수를 인자로 받거나 함수를 반환하는 함수입니다. 이 조건이 성립하기 위해서는 기본적으로 함수가 FirstClassCitizen이여야 합니다.
Higher-order-function이 무엇인지는 알았지만 실제로 언제 어떻게 사용될까??? 간단한 예제를 통해서 알아보겠습니다.
Int값 2개를 입력받고, 어떤 연산을 하고 Int값을 반환하는 함수 여러개가 있는 경우, 예제처럼 (Int, Int) -> Int 라는 고차함수를 활용한 함수 추상화를 통해 함수 하나로 다양한 연산을 처리 할 수 있습니다. 6,7,8 번째 라인 처럼 이름이 있는 함수를 전달 할 수도 있고 10, 11, 12 처럼 이름이 없는 함수를 전달 할 수도 있습니다.