前几天我正在阅读ChanL的来源.它包含一个使用渠道的例子来实现期货.DEFUN在LET中声明,如下:
(let ((some-var some-value))
(defun foo () ... (reference some-var) ... )
(defun bar () ...))
Run Code Online (Sandbox Code Playgroud)
这有什么用途?它只是提供一些共同的价值,几个功能可以共享,并保持封装清洁?
您已经回答了以下问题:为一组函数提供共享绑定并保持封装清理.
来自http://letoverlambda.com/textmode.cl/guest/chap2.html的简单示例:
(let ((direction 'down))
(defun toggle-direction ()
(setq direction
(if (eq direction 'up)
'down
'up))))
(toggle-direction) => UP
(toggle-direction) => DOWN
(toggle-direction) => UP
(toggle-direction) => DOWN
Run Code Online (Sandbox Code Playgroud)
您还可以在此闭包内添加一个函数,该行为取决于方向.