代码之家  ›  专栏  ›  技术社区  ›  oneself

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

  •  21
  • oneself  · 技术社区  · 16 年前

    我试图在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)
    
    2 回复  |  直到 12 年前
        1
  •  31
  •   Miserable Variable    12 年前

    首先,我不确定是否命名您的函数 t 因为“t”被用作 truth value 在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)
    

    请注意使用“funcall”,它会触发实际的函数调用。

        2
  •  6
  •   Jouni K. Seppänen    16 年前

    结尾处的注释 this page 表示可以引用函数 #' 而不是 ' 向字节编译器发出信号,表示符号总是命名一个函数。