Подтвердить что ты не робот

Как передать функцию в качестве параметра в 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)
4b9b3361

Ответ 1

Во-первых, я не уверен, что назначение вашей функции 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)

Обратите внимание на использование функции "funcall", которая вызывает фактический вызов функции.

Ответ 2

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