High Order Function

High-Order-Function(고차함수)는 한 마디로 표현하면 함수를 파라미터로 전달받거나, 함수를 리턴하는 함수를 말한다.이조건이 성립하려면 기본적으로 함수가 First Class Citizen 이어야한다.

fun sum(a: Int, b: Int) : Int {
    return a+b
}

fun simpleHighOrderFunction(sum: (Int, Int) -> Int, a: Int, b: Int): Int {
    return sum(a, b)
}

위의 함는 파라미터로 Int값 두개를 받아 Int를 반환하는 함수와 Int 값 a와 b를 받아, Int형 값을 리턴하는 함수다. simpleHighOrderFuntion()은 파라미터로 함수를 받았으므로 High-Order-Function이라고 말할 수 있다.

fun main(args: Array<String>) {

    println(simpleHighOrderFunction(sum, 10, 20)) //함수를 변수에 저장해서 사용하는 방식

    println(simpleHighOrderFuntion({x,y -> x+y }, 10, 20)) //익명함수를 작성해서 사용하는 방식
    println(simpleHighOrderFunction({x,y -> x-y}, 10, 20))
    println(simpleHighOrderFunction({x,y -> x*y}, 10, 20))
}

val sum: (Int, Int): Int = {x, y -> x + y}

Last updated