Difference between Call by Name and Call by Value
object CallByNameValue extends App{
def doSomething() = {
println("do something...")
1
}
def callByValue(x: Int){
println("x1: "+x)
println("x2: "+x)
}
def callByName(x: => Int){
println("x1: "+x)
println("x2: "+x)
}
println("======Call by Value======")
callByValue(doSomething())
println("======Call by Name======")
callByName(doSomething())
}
Output
======Call by Value======
do something...
x1: 1
x2: 1
======Call by Name======
do something...
x1: 1
do something...
x2: 1