(1)call-by-value是在调用函数之前计算;
(2) call-by-name是在需要时计算
示例代码
//声明第一个函数
def func(): Int = {
println("computing stuff....")
42 // return something
}
//声明第二个函数,scala默认的求值就是call-by-value
def callByValue(x: Int) = {
println("1st x: " + x)
println("2nd x: " + x)
}
//声明第三个函数,用=>表示call-by-name求值
def callByName(x: => Int) = {
println("1st x: " + x)
println("2nd x: " + x)
}
//开始调用
//call-by-value求值
callByValue(func())
//输出结果
//computing stuff....
//1st x: 42
//2nd x: 42
//call-by-name求值
callByName(func())
//输出结果
//computing stuff....
//1st x: 42
//computing stuff....
//2nd x: 42
作者:IIGEOywq
链接:https://www.jianshu.com/p/ace2bb24dc11
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。