상세 컨텐츠

본문 제목

[Kotlin] lamba

프로그래밍

by 독서와 여행 2021. 3. 29. 13:44

본문

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

관련글 더보기

댓글 영역