【发布时间】:2014-09-18 19:40:42
【问题描述】:
我已经阅读了不同的教程和手册,但仍然无法将东西放在一起。
据我了解,当我需要在一个事件中添加一个新函数而一个旧函数仍然保存时,我通过调用 add-hook 添加一个钩子。从add-hook上的手动输入:
在钩子列表的开头添加(如果需要)FUNCTION 除非可选参数 APPEND 不为零
所以钩子只是一个函数的列表。但是这个列表看起来怎么样?作品?从我的小研究中,我发现除了 car 和 cdr 之外的每个 cons 单元格 还有一个不可见的未提及的函数指针插槽(可能是索引,没关系)。那么如何手动创建函数列表并执行它呢?可能使用add-to-list 函数,但我尝试的所有操作都会触发错误。手册中还有mentioned:
您可以像任何其他 Lisp 变量一样使用 setq 设置挂钩变量,
这里出了点问题,因为指向函数的指针没有被 setq 复制。即:
(defun myfunc1 () (message "hello"))
(setq onemorefunc 'myfunc1)
在我执行(onemorefunc) 后,调试器触发,setq 只是忽略存储指针的未命名元素的值。
【问题讨论】: