fun main() {
val result = callByValue(lambda())
println(result)
}
fun callByValue(b: Boolean) : Boolean{
println("callByValue function")
return b
}
val lambda: () -> Boolean = {
println("lambda funtion")
true
}
위 코드의 실행값은 아래와 같다. callByValue(lambda()) 에서 lanbda 가 먼저 실행되고 그 다음 callByValue 가 실행되는 모습을 볼 수 있다.
lambda funtion
callByValue function
true
다음은 비슷해 보이지만 다른 코드 callByValue에서 파라미터가 lambda 형식으로 바뀌었다.
그렇기 때문에 callByValue에도 lambda() 가 아닌 lambda가 들어간다! callByValue가 lambda 변수를 받으니까!
fun main() {
val result = callByValue(lambda)
println(result)
}
fun callByValue(b: () ->Boolean) : Boolean{
println("callByValue function")
return b()
}
val lambda: () -> Boolean = {
println("lambda funtion")
true
}
실행 코드는 이렇게 된다.
callByValue function
lambda funtion
true
lambda가 더 늦게 실행되는데 그 이유는 이름이 전달된 시점에 실행하는게 아니라
식을 호출 할 때 식이 실행하기 때문!
[Kotlin] 함수 선언 (0) | 2021.03.29 |
---|---|
[Kotlin] inline (0) | 2021.03.29 |
[Kotlin] 가변인자 vararg (0) | 2021.03.29 |
[Kotlin] command line 컴파일 (0) | 2021.03.27 |
파이썬 데이터 베이스 사용하기 (0) | 2021.03.22 |
댓글 영역