繁体   English   中英

通过名称和价值澄清来打电话

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM