fun main() {
val result = callByValue(lambda()) //값에 의한 호출
println(result)
val result2 = callByName(lambda) //이름에 의한 호출
println(result2)
}
fun callByValue(b: Boolean): Boolean {
println("callByValue function")
return b
}
fun callByName(b : ()-> Boolean) : Boolean {
println("callByName function")
return b();
}
val lambda: () -> Boolean = {
println("lambda function")
true
}
위의 코드를 실행하면 아래와 같은 결과가 나온다.
lambda function
callByValue function
true
callByName function
lambda function
true
순서가 바뀌는 이유는 무엇일까?
값에 의한 호출은 메소드에서 람다식을 호출하면서 람다식을 먼저 수행한 뒤 해당 값을 사용하고
이름에 의한 호출은 메소드에서 람다식 자체를 가져가서 사용하므로
실제로 메소드 내에서 람다식을 실행할 때 수행되기 때문이다.
'개발 > Kotlin' 카테고리의 다른 글
코틀린 공부 - 함수 (4) also, apply (0) | 2021.08.03 |
---|---|
코틀린 공부 - 함수(4) - let / run (0) | 2021.08.03 |
코틀린 공부 - 함수(2) (0) | 2021.08.02 |
코틀린 공부 - 함수(1) (0) | 2021.08.02 |
코틀린 기초 5 - object (0) | 2020.06.25 |