본문 바로가기

프로그래밍/코틀린

[코틀린] 고차함수 - 함수 반환

고차 함수는 다른 함수를 매개변수로 이용하거나, 반환하는 함수이다.

앞에서는 매개변수 부분에 함수를 이용하는 방법을 알아보았다.

 

이번에는 고차 함수에서 함수를 반환하는 방법에 대해 살펴보겠다.

fun hoFun5(str: String): (Int, Int) -> Int {
    return when (str) {
        "*" -> { x1, x2 -> x1 * x2 }
        "-" -> { x1, x2 -> x1 - x2 }
        "/" -> { x1, x2 -> x1 / x2 }
        else -> { x1, x2 -> x1 + x2 }
    }
}

fun main() {
    val resultFun = hoFun5("*")
    println("resultFun * : ${resultFun(10,5)}")
}
[결과값]
resultFun * : 50

위의 소스에서 fun hoFun5의 (:) 세미콜론 오른쪽에 있는 타입이 반환 타입이된다.

즉, 반환 타입이 (Int, Int) -> Int 함수타입을 가진다.

 

hoFun5는 *에 해당하는 {x1, x2 -> x1 * x2}라는 함수를 반환하고, 그 함수에 10과 5 인수가 들어가

50이라는 결과를 발생한다.