在Scala中,以下表达式是否采用相同数量的步骤,无论您是按名称还是按值计算它们?
coursera scala lecture1.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
答案 0 :(得分:2)
不要忘记在按值调用的情况下,需要在调用函数之前计算值:
// 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