Jestem trochę nowy w Emacsie. Przeglądając niektóre konfiguracje, zauważyłem, że w „add-hook” są dwa typy poleceń.
(add-hook 'LaTeX-mode-hook #'LaTeX-math-mode)
i
(add-hook 'LaTeX-mode-hook 'LaTeX-math-mode)
To mnie dezorientowało przez długi czas i nie wiem, jak wyszukiwać „#” w Google ...
Dzięki.
Odpowiedzi:
W Emacs Lisp, jeśli
foo
jest symbolem, to'foo
i#'foo
są całkowicie równoważne. Ta ostatnia forma (z#'
) jest preferowana, gdyfoo
jest funkcją, ponieważ dokumentuje fakt, że ma ona być wywoływana.Twoje dwie formy są zatem całkowicie równoważne, a ta z
#'
jest preferowana.Edycja : jak wskazał Malabarba, nie jest to do końca prawdą:
#'
w przypadku symboli kompilator bajtów wyśle ostrzeżenie, jeśli funkcja nie zostanie zdefiniowana.(Zauważ, że nie dotyczy to form lambda, dla których zwykły
'
uniemożliwia kompilatorowi bajtów kompilację formy lambda, jak udokumentowano w innym miejscu . Zauważ ponadto, że niekoniecznie dzieje się tak również w innych dialektach Lisp, na przykład w Common Lisp#'foo
wykonuje wczesne wiązanie).źródło
#'
instruuje kompilator, aby skompilował lambda, w przeciwieństwie do zwykłego cudzysłowu, co nie. Mam nadzieję, że sformułowałem sformułowanie w jaśniejszy sposób.