Comment passer une fonction en tant que paramètre dans in elisp?
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)
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