如何将函数作为参数传递给elisp?

one*_*elf 21 emacs elisp

我试图在elisp中将一个方法传递给另一个方法,然后让该方法执行它.这是一个例子:

(defun t1 ()
  "t1")

(defun t2 ()
  "t1")

(defun call-t (t)
  ; how do I execute "t"?
  (t))

; How do I pass in method reference?
(call-t 't1)
Run Code Online (Sandbox Code Playgroud)

Tim*_*sch 31

首先,我不确定命名函数t是否有用,因为't'被用作lisp中的真值.

也就是说,以下代码适用于我:

(defun test-func-1 ()  "test-func-1"
   (interactive "*")
   (insert-string "testing callers"))

(defun func-caller (callee)
  "Execute callee"
  (funcall callee))

(func-caller 'test-func-1)
Run Code Online (Sandbox Code Playgroud)

请注意使用'funcall',它会触发实际的函数调用.

  • 是的,你绝对想避免尝试使用符号`t`和`nil`作为任何名称.(当然,除了他们自己 - 评估它们会产生相同的符号.) (2认同)

Jou*_*nen 6

本页末尾的注释表示您可以引用函数#'而不是'向字节编译器发信号通知符号始终命名函数.