함수를 인자(파라미터)로 받고 결과 값으로 내보낼수 있다
함수 타입 표시하는 방법
fun function2 (function : (Int, Int) -> Int) {
함수내용
}
고차함수를 호출하는 방법
fun addTwoNumbers(number1 : Int, number2 : Int) : Int {
return number1 + number2
}
fun addTenNine(function : (Int, Int) -> Int) {
val result : Int = function(10, 9)
println("결과는 ${result} 입니다")
}
addTenNine(::addTwoNumbers)
val addTenNine2 : (Int, Int) -> Int = { number1 : Int, number2 : Int ->
// return number1 + number2 // 람다 안에서는 return을 실행할수 없다
number1 + number2
}
addTenNine(addTenNine2) // 람다함수를 인자로 사용하는 경우에는 ::을 사용할 필요가 없다
// 생략버젼 1
val addTenNine3 : (Int, Int) -> Int = { number1, number2 ->
number1 + number2
}
addTenNine(addTenNine3)
// 생략버젼 2
val addTenNine4 = { number1 : Int, number2 : Int ->
number1 + number2
}
addTenNine(addTenNine4)
// 너무 간단한 경우
addTenNine {number1, number2 -> number1 + number2} // Int형인걸 addTenNine 함수가 이미 알고있어서 생략가능
// 파라미터가 없는 람다 함수
val addTenNine5 : () -> Int = {
10 + 9
}
val function6 : (String) -> Unit = { println(it) }