Call by Value, Call by Name
Call by Value
fun main(args: Array<String>) {
callByValue(funA)
}
fun callByValue(b: Boolean): Boolean {
println("callByValue")
b
}
fun funA(): Boolean {
println("funA")
true
}
// funA
// callByValue
b의 값을 사용하는것은 println("callByValue")의 이후이지만, 함수의 수행은 더 먼저되었다.
-> callByValue의 개념에 따라 함수가 Argument로 전달될때 그 즉시 평가되고
그 결과값이 메소드의 파라미터로 전달되기 때문.Call by Name
callByName 은 funA() 가 argument 로 넘어간 시점이 아닌 f()가 call 되는 시점에 값이 평가된다.
그래서 이걸 어디에 쓰나요?
Last updated