Notice
Recent Posts
Recent Comments
Link
Hello, Android!
고차함수 본문
고차함수는 다른 함수를 인자로 사용하거나, 함수의 결과값으로 반환하는 함수이다
즉 일급 객체(일급 함수)를 서로 주고받을 수 있는 함수가 고차함수 이다
※일급 객체는 다음 글 참조 https://lwndnjs93.tistory.com/23
예를들어 람다식을 매개변수로 받는 고차함수의 경우
위와 같이 calc 함수의 첫번째 매개변수로 두개의 Int를 받고 한개의 Int를 처리 결과로 반환하는
람다식을 인자로 받는것이 가능하다
그래서 calc호출시 {x,y -> x*y} x와 y를 받아 둘을 곱하는 람다식과 9, 8을 인자로 넘겼다
위 인자들을 받은 calc함수는 인자로 받은 람다식에 a, b를 할당하여 처리한 결과를 반환한다
람다식 뿐만아니라 일반 함수를 인자로 받고 일반 함수를 반환하는것도 가능하다
main함수에서 num1은 sub함수의 결과를 할당한다
여기서 num2에서 특이한 것으로는 sum함수의 첫번째 인자로 int값을 할당하는것이 아닌
mul()함수를 할당한 것이다
이렇게 sum함수의 첫번째 인자는 mul(10,10)의 결과와 900이 들어가 sum 함수가 실행이 된다
위의 num2와 같이 고차함수는 일반 함수를 인자로 주는것도 가능하다
일반함수를 결과값으로 돌려주는 고차함수도 가능하다
이번에는 calc함수의 인자가 아닌 반환값에 일반 함수를 반환하는 경우이다
calc함수에서 받은 매개변수 num1과 num2를 그대로 반환하는 함수인 sum에 넘겨
그 결과를 반환하는 예 이다