来自问题如何将函数作为参数传递给 elisp?我知道如何将函数作为参数传递给函数。但 我们需要更深入...
撇开蹩脚的电影引用不谈,我想要一个函数,它将函数作为参数并能够调用自己[再次传递它作为参数的函数]。考虑这个片段:
(defun dummy ()
(message "Dummy"))
(defun func1 (func)
(funcall func))
(defun func2 (func arg)
(message "arg = %s" arg)
(funcall func)
(func2 'func (- arg 1)))
调用(func1 'dummy)
会产生预期的输出:
Dummy
"Dummy"
调用(func2 'dummy 4)
会导致错误消息:
arg = 4
Dummy
arg = 3
funcall: Symbol's function definition is void: func
我曾预计对 dummy 的四次调用,但第二次迭代func2
似乎已经失去了传递给第一次迭代(并从那里传递)的函数的知识。任何帮助深表感谢!