(let ((x 2) (y 3)
(let ((x 7)
(z (+ x y)))
(* z x)))
Run Code Online (Sandbox Code Playgroud)
使用上面的代码,为什么答案35,而不是70?在第二个let,x是7所以z应该是7 + 3 = 10,然后结果应该是7*10 = 70.我知道另一个是让*我在这之间非常混乱2.样本是谷歌的抓取.我已经google但是无法得到它.
扩展Leppie的答案:如果你写过
(let ((x 2) (y 3))
(let* ((x 7)
(z (+ x y)))
(* z x)))
Run Code Online (Sandbox Code Playgroud)
你会得到你期望的答案.内部let*完全等同于
(let ((x 7))
(let ((z (+ x y)))
(* z x)))
Run Code Online (Sandbox Code Playgroud)
实际上可能会在某些方案中以这种方式实施.
换句话说,在第一个let*之后的每个连续绑定的形式都在所有先前创建的绑定的范围内.
| 归档时间: |
|
| 查看次数: |
425 次 |
| 最近记录: |