Ich bin ein bisschen neu in Emacs. Bei der Betrachtung einiger Konfigurationen stellte ich fest, dass "add-hook" zwei Typen von Befehlen enthält.
(add-hook 'LaTeX-mode-hook #'LaTeX-math-mode)
und
(add-hook 'LaTeX-mode-hook 'LaTeX-math-mode)
Das hat mich lange verwirrt und ich weiß nicht, wie ich "# '" in Google suchen soll ...
Vielen Dank.
Antworten:
Wenn in Emacs Lisp
foo
ein Symbol ist, dann sind'foo
und#'foo
völlig gleichwertig. Die letztgenannte Form (mit#'
) wird bevorzugt, wennfoo
es sich um eine Funktion handelt, da sie die Tatsache dokumentiert, dass sie zum Funktionieren bestimmt ist.Ihre beiden Formen sind daher völlig gleichwertig, und die mit
#'
wird bevorzugt.Bearbeiten : wie von Malabarba ausgeführt, ist dies nicht ganz richtig:
#'
bei Symbolen gibt der Byte-Compiler eine Warnung aus, wenn die Funktion nicht definiert ist.(Beachten Sie, dass dies nicht bei Lambda-Formen der Fall ist, bei denen plain
'
den Byte-Compiler daran hindert, die Lambda-Form zu kompilieren, wie an anderer Stelle dokumentiert . Beachten Sie außerdem, dass dies auch bei anderen Lisp-Dialekten nicht unbedingt der Fall ist, z. B. in Common Lisp#'foo
führt eine frühe Bindung durch.)quelle
#'
weist der Compiler an, das Lambda zu kompilieren, im Gegensatz zu einfachen Anführungszeichen, die dies nicht tun. Ich habe es hoffentlich klarer formuliert.