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}