【发布时间】:2014-08-12 11:07:05
【问题描述】:
据说,Common Lisp 中只有特殊的变量才能解绑。对于所有词法变量,默认值为nil。我认为类槽存在于闭包之类的东西中,但显然它们不存在。
如果我定义一个没有:initform 参数的CLOS 槽(希望它们无论如何都会绑定到nil)并且在创建实例时不提供值,我将得到一个带有未绑定槽的实例。为什么会这样?不方便。
【问题讨论】:
-
“据说”。哪里说的? “希望它们无论如何都会被绑定到 nil ” - 你为什么希望得到一些东西,而 Common Lisp 规范却说一些不同的东西?在处理编程语言时,“希望”并不是一个真正有用的工具。例如,拥有未绑定的插槽可以检测它们是否已初始化。
-
@RainerJoswig,您对“希望”的看法是完全正确的 ;-) 在阅读任何文档之前,这只是对语言功能的一些实际探索。
-
不仅仅是槽和特殊变量,符号也可以作为函数解绑。请参阅fmakunbound 和makunbound。请注意,符号也不必具有特殊声明即可具有符号值。
标签: lisp common-lisp slot clos