(let ((x 2) (y 3)
(let ((x 7)
(z (+ x y)))
(* z x)))
对于上面的代码,为什么答案是 35,而不是 70?在第二let
,x 是 7,所以 z 应该是 7 + 3 = 10,然后结果应该是 7 * 10 = 70。我知道还有另一个是 let* 我在这 2 之间感到非常困惑。示例是从 google 获取的。我已经谷歌但无法得到它。
扩展莱皮的答案:如果你写了
(let ((x 2) (y 3))
(let* ((x 7)
(z (+ x y)))
(* z x)))
你会得到你所期望的答案。内置的let*
完全等于
(let ((x 7))
(let ((z (+ x y)))
(* z x)))
事实上,在某些计划中可能会以这种方式实施。
换句话说,在一个let*
形成第一个绑定之后的每个连续绑定,该绑定位于所有先前创建的绑定的范围内。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)