Hello, Android!

고차함수 본문

Kotlin

고차함수

lwndnjs93 2020. 2. 24. 16:59

고차함수는 다른 함수를 인자로 사용하거나, 함수의 결과값으로 반환하는 함수이다

즉 일급 객체(일급 함수)를 서로 주고받을 수 있는 함수가 고차함수 이다

※일급 객체는 다음 글 참조 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에 넘겨

그 결과를 반환하는 예 이다

'Kotlin' 카테고리의 다른 글

익명함수  (0) 2020.03.01
고차함수를 호출하는 방법  (0) 2020.02.24
람다식  (0) 2020.02.24
함수형 프로그래밍  (0) 2020.02.24
함수의 매개변수  (0) 2020.02.23