Как передать функцию в качестве параметра в elisp? - PullRequest
21 голосов
/ 17 октября 2008

Я пытаюсь передать один метод другому в 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 ]

31 голосов
/ 17 октября 2008

Во-первых, я не уверен, что наименование вашей функции t помогает, так как 't' используется как значение истины *1003* в 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', который запускает фактический вызов функции.

6 голосов
/ 22 октября 2008

Примечание в конце этой страницы говорит, что вы можете заключать функции в кавычки с #' вместо ', чтобы сообщить байтовому компилятору, что символ всегда называет функцию.

...