[英]call by name and value clarification
在Scala中,以下表达式是否采用相同数量的步骤,无论您是按名称还是按值计算它们?
课程scala讲座1.2 - 编程元素 - 说两者应该采取相同的步骤,我在“按姓名呼叫”中获得一个额外的步骤,如下所示:
def test(x : Int, y : Int) = x *x
表达式: test(2+3, 3*4)
按价值呼叫:(3个步骤) :
test(5, 12)
5*5
25
按名称呼叫:(4个步骤) :
(2+3) * (2+3)
5 * (2+3)
5 * 5
25
不要忘记在call-by-value情况下,需要在调用函数之前计算值:
// call-by-value
test(2+3, 3*4)
test(5, 3*4)
test(5, 12)
5*5
25
// call-by-name
test(2+3, 3*4)
(2+3)*(2+3)
5*(2+3)
5*5
25
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.