Question

J'essaie de passer d'une méthode à une autre en elisp, puis avoir cette méthode l'exécuter. Voici un exemple:

(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)
Était-ce utile?

La solution

Tout d'abord, je ne suis pas sûr que le nom de votre fonction t aide, car "t" est utilisé comme valeur de vérité dans lisp.

Cela dit, le code suivant fonctionne pour moi:

(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)

Veuillez noter l'utilisation de 'funcall', qui déclenche l'appel de fonction réel.

Autres conseils

La note à la fin de cette page indique que vous pouvez citer des fonctions avec # ' au lieu de ' pour signaler au compilateur d'octets que le symbole nomme toujours une fonction.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top