안드로이드
Higher-Order Function(고차함수)란 in Kotlin
devGeek
2022. 6. 14. 15:01
반응형
Higher-Order Functions 란
Higher-Order Functions(고차함수)란 함수의 인자로 다른 함수를 받거나 또는 함수 자체를 반환하는 함수이다.
함수 인자로 함수를 받는 고차함수
fun calculate(x: Int, y: Int, operation: (Int, Int) -> Int): Int { // 1
return operation(x, y) // 2
}
fun sum(x: Int, y: Int) = x + y // 3
fun main() {
val sumResult = calculate(4, 5, ::sum) // 4
val mulResult = calculate(4, 5) { a, b -> a * b } // 5
println("sumResult $sumResult, mulResult $mulResult")
}
- 고차함수를 정의하는 부분이다. 여기서는 정수형 인자 x, y를 받는다. 추가적으로 하나의 함수
operation
을 받는데, 이 함수는 또calculate
함수의 리턴에도 사용된다. - 고차함수는
operation
함수의 결과값을 반환한다. operation
에 대입될 함수(sum
)를 정의한다.- 고차함수(
calculate
)에 정수형 인자로 2개의 정수와 함수 인자로::sum
을 담아 호출한다. (::
는 이름으로 함수를 참조하는 코틀린 표기법이다.) - 고차함수(
calculate
)를 호출하는데 이번에는 함수형 인자에 정의된 함수를 담는 것이 아니라람다 표현식
을 이용해서 함수를 담는다.(람다식
을 사용하는게 훨씬 깔끔해보이지 않나??)
함수를 반환하는 고차함수
fun operation(): (Int) -> Int { // 1
return ::square
}
fun square(x: Int) = x * x // 2
fun main() {
val func = operation() // 3
println(func(2)) // 4
}
- 함수를 반환하는 고차함수를 정의한다.
(Int) -> Int
는 인자와 반환형을 나타낸다. 위 코드에서는square
함수의 인자와 반환형을 나타낸다. operation
고차함수에서 반환하는square
함수를 정의한다.func
변수에operation
고차함수의 반환값을 저장한다. 여기서는func
변수는operation
의 반환값인square
함수를 저장한다.func
함수를 호출한다. 정확히는square(2)
가 호출되어 출력된다.
참고 문서
질문과 잘못된 점에 대해 말씀해주시는 건 언제나 환영입니다.
zero5.two4@gmail.com
반응형