References: Do it! 코틀린 프로그래밍

코틀린에서의 함수 호출방법에 대해 알아봅니다.

 

 

1. 값에 의한 호출

 

값에 의한 호출로 람다식이 전달되는 경우 람다함수는 값으로 처리되어 바로 람다함수가 수행되며 그 후 결과 값을 전달합니다.

다음 예시를 통해 확인해 보겠습니다.

fun callByValue(b: Boolean): Boolean{
    println("Called callByValue function.")
    return b
}
val lambdaFunc: ()->Boolean = {
    println("Called lambdaFunc function")
    true
}
fun main() {
    val result = callByValue(lambdaFunc())
    println(result)
}

callByValue(lambdaFunc()) > 람다함수는 값으로 처리되어 즉시 수행됨. 결과값 true를 리턴.

callByValue(lambdaFunc()) > 람다함수가 실행된 결과값인 true를 인자로 함수가 실행됨.

 

위에 설명한 순서대로라면 결과값은 다음과 같이 출력됩니다.

 

 

2. 이름에 의한 호출

 

람다함수를 이름으로만 호출해보겠습니다.

코드를 다음과 같이 변경해줍니다.

fun callByName(b: ()->Boolean): Boolean{
    println("Called callByName function.")
    return b()
}
val lambdaFunc: ()->Boolean = {
    println("Called lambdaFunc function")
    true
}
fun main() {
    val result = callByName(lambdaFunc)
    println(result)
}

fun callByValue(b: ()->Boolean): Boolean > 람다식을 이름으로만 호출하기 위해 자료형을 람다식으로 변경해줍니다.

return b() > 람다식을 리턴합니다.

 

실행순서는 값에 의한 호출과 다릅니다.

A. callByValue(lambdaFunc) > 람다함수가 저장된 변수가 함수의 인자로 전달됩니다.

B. fun callByValue(b: ()->Boolean): Boolean > 인수를 받아온 함수가 실행됩니다.

C. return b() > 인수가 리턴됩니다.

D. val lambdaFunc: ()->Boolean > 리턴된 인수안에 담겨있는 람다함수가 실행됩니다.

E. true > 람다함수의 결과값인 true가 리턴됩니다.

 

위에 설명한 순서대로라면 결과값은 다음과 같게 출력됩니다.

 

 

 

반응형

'Programming' 카테고리의 다른 글

[Kotlin] 14. 인라인 함수  (0) 2019.08.23
[Kotlin] 13. 익명함수  (0) 2019.08.23
[Kotlin] 11. 람다식  (0) 2019.08.22
[Kotlin] 10. 함수의 매개변수  (0) 2019.08.21
[Kotlin] 09. 함수의 선언과 간략화  (0) 2019.08.21

+ Recent posts