Lisp反引号展开问题:fboundp判断相关代码报错如何修复
错误原因
你的代码存在两个问题:
fboundp参数写法冗余:`',elem写法完全多余,elem变量本身存储的就是需要检查的函数符号,直接传入即可。- 动态函数调用语法错误:Lisp 执行函数调用时,默认不会对括号内第一个位置的符号做变量求值,你写的
(ui-elem -1)会尝试寻找名为ui-elem的函数,而不会调用ui-elem变量存储的menu-bar-mode这类目标函数。
修复方案
动态调用变量存储的函数,需要使用funcall触发变量求值后再调用。
第一份示例代码修复后:
(dolist (elem '(mapcar mapcon)) (when (fboundp elem) (print "hello")))
第二份UI配置代码修复后:
(dolist (ui-elem '(menu-bar-mode tool-bar-mode tooltip-mode scroll-bar-mode horizontal-scroll-bar-mode)) (when (fboundp ui-elem) (funcall ui-elem -1)))
内容的提问来源于stack exchange,提问作者aadcg
相关产品推荐
相关产品推荐

