我正在尝试使用交互式函数名称功能。在 emacs lisp 手册上它说:
'A'
函数名称(即满足 fboundp 的符号)。现有、完成、提示。
所以我用一个小测试代码尝试了它:
(defun testfun1 ()
(message "hello, world!"))
(defun test (abcd)
(interactive "aTheme name: ")
(abcd))
Emacs 给出错误提示:
测试:符号的函数定义为void:abcd
我尝试用 fboundp 测试 abcd,它返回 t。所以我对如何在交互中使用“a”选项感到非常困惑。
任何机构都可以提供一些提示吗?
你的职能test
接收其参数abcd
作为函数,但您不能仅通过将引用函数的符号放在要计算的列表的第一个位置来调用函数。由于 Emacs Lisp 是一个Lisp-2,对提供给交互式查询的函数的引用存储在符号中abcd
's 值槽,不是它的功能槽。列表的评估规则如下
(abcd)
涉及查看第一个对象的功能槽如果该对象是一个符号,这就是您的情况。相反,如果您希望调用符号中引用的函数值槽, 你需要the funcall功能:
(funcall abcd)
上面说:“采取abcd
,从中获取价值值槽,并且,如果它是一个函数,请在此处调用它,就像我们在符号的列表的第一个位置引用该函数一样功能槽或通过直接引用函数对象。”
Here's 类似问题的答案参考文献有助于您进一步探索。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)