在一些文档中,我发现他们说的答案是*var*
意味着全局变量。使用defvar时* var *和var有什么区别?
但是当我尝试时,我无法确定。
FIRST-PACKAGE[27]> (defvar b 1)
B
FIRST-PACKAGE[28]> b
1
FIRST-PACKAGE[29]> (defun add_b (x) (+ x b))
ADD_B
FIRST-PACKAGE[30]> (add_b 3)
4
FIRST-PACKAGE[31]>
在我的例子中,如果回答是正确的话,b
仍然不是全局的。
但为什么功能add_b
仍然可以使用它?
如何理解此示例和*var*
?
谢谢〜
我知道C++中的动态绑定。 lisp中的动态绑定是什么?他们有多相似?谢谢〜 – sam 2012-08-13 12:18:18
@sam我怀疑“不是很多”。在Common Lisp中,它是动态变量查找与静态变量查找。在C++中,这是一个vtable调度与编译时确定方法。 – Vatine 2012-08-13 12:37:57
@sam:动态绑定在很多地方都有解释。 Lisp书籍就是这样做的。一个简单的谷歌搜索将带来很多点击... – 2012-08-13 13:50:08