有人可以解释一下为什么评估后“and”的值一定是 16 - 这是正确的答案吗?
我认为答案 3 是因为我们调用函数 f 并将值 1 和 2 作为函数 f 发送,但看不到值 5 和 10,但我想我错了。
val x = 1
val y = 2
val f = fn y => x + y
val x = 5
val y = 10
val ans = f x + y
我想我明白了。开始:
功能f
直到最后才得到评估。所以在:
val ans = f x + y
... 功能f
被调用最近的值x
这是5
因为之前的值x
正在被阴影笼罩。所以在:
val f = fn y => x + y
...收到的值变成的值y
。这里的函数f
取前一个值x
这是1
所以总共有6
(x
来自静态环境)。然后:
val ans = f x + y
我们回到这里:6 + 10 = 16
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)