为什么elisp中的let表单包含没有varlist args的body。示例代码,
(defun keyboard-quit ()
...............
(let (select-active-regions)
(deactivate-mark))
.........
)
这段代码是否做同样的事情,
(defun keyboard-quit ()
.......................
(select-active-regions)
(deactivate-mark)
...................................
)
此代码段取自simple.el
Ctrl + G 键绑定。
答案 0 :(得分:4)
不,这相当于将变量绑定到nil
,即
(let (a)
(b))
与
相同(let ((a nil))
(b))
您可能实际上已经从代码格式中猜到了:如果您是对的,代码将被格式化为
(let
(a)
(b))
而Emacs将(a)
缩进(b)
。
此外,这是documented - 请参阅以下案例(i):
特殊表格:让(绑定......)表格......
...
每个绑定都是(i)一个符号,在这种情况下,该符号在本地绑定到
nil
;或(ii)表格(符号价值形式)的清单,在这种情况下,符号在本地与评估价值形式的结果相关联。如果省略value-form,则使用nil
。
另见 C-h f let RET :
(让VARLIST BODY ......)
...
VARLIST的每个元素都是一个符号(绑定为nil)