Call By Name :传给函数/方法M一个参数函数,该参数函数在函数体内调用时执行.
Call By Value : 传给函数的是值,如果是表达式或者是参数函数,则要先计算出表达式的值或者是要先得到参数函数执行后的返回值.
Call By Name:
def print_world(f : => Int):Unit={ val z=f println("z ="+z) println("world") }
//传入的f函数(或表达式)的运算结果为一个Int值。
def print_hello(): Int ={ println("hello") 1 }
print_world(print_hello)
结果:
hello
z =1
world
z =1
world
Call By Value:
def print_num(i:Int)={
println(i)
}
print_num(1)
结果:
1