我很困惑/不确定如何使用术语变量或绑定.我认为我的不确定性可归结为三个相关的简单问题.
(let ((hi 'outer))
(let ((hi 'inner))
(print hi))
(print hi))
Run Code Online (Sandbox Code Playgroud)
问题A:在上面的代码中,以下哪项是正确的?
只有一个变量.一个变量有两个绑定:外部绑定和内部绑定.
一个名称有两个变量:外部变量和内部变量.
当我在互联网上阅读有关局部变量的文章时,有时文章似乎选择1,有时候2.两者是否同样正确?
(let ((hi 0))
(print hi)
(setq hi 1)
(print hi)
(setq hi 2)
(print hi))
Run Code Online (Sandbox Code Playgroud)
问题B:以上哪项适合上述代码?
有一个绑定正在被重用.
有三个绑定.
我从未见过任何使用单词绑定的材料,选择2作为答案,但另一方面,人们可能仍然认为"名称hi被绑定三次.三个绑定发生.代码执行三个绑定. " 所以我不确定.
(defun fac (n)
(if (> n 1)
(* n (fac (1- n)))
1))
(fac 4)
Run Code Online (Sandbox Code Playgroud)
问题C:正在执行递归函数时,哪个是正确的?
一个变量会同时绑定几个.
一个名称将同时存在多个变量.
这似乎与问题A类似,但问题A涉及两个let表单,每个表单只执行一次,而这个问题更像是一个let表单,它同时在多个实例中执行.
这些问题是针脚的角度吗?我想知道这些问题,因为关于在循环中使用闭包的着名问题有很多文章,我认为理解那些文章需要知道一个变量是什么以及一个绑定是什么.
| 归档时间: |
|
| 查看次数: |
310 次 |
| 最近记录: |