Bir sembolün önündeki 'ile #' arasındaki fark nedir?


22

Emacs için biraz yeniyim. Bazı konfigürasyonlara bakarken "add-hook" da iki tip komut olduğunu gördüm.

(add-hook 'LaTeX-mode-hook #'LaTeX-math-mode)

ve

(add-hook 'LaTeX-mode-hook 'LaTeX-math-mode)

Bu beni uzun zamandır kafam karıştı ve google'da "#" "nasıl aranacağını bilmiyorum ...

Teşekkürler.


2
Üzgünüm benim hatam. Cevap bulundu: stackoverflow.com/questions/2701698/…
X.Arthur


2
Diğer sitelerdeki kopyalar gayet iyi. Burada bir tane var, ama bu neredeyse bir kopya. emacs.stackexchange.com/q/3595/50
Malabarba

Yanıtlar:


21

Emacs Lisp'te, foobir sembol ise, o zaman 'foove #'footamamen eşdeğerdir. İkinci biçim (ile #'), fooişlevsiz olduğu için gerçeği belgeleyen bir işlev olduğunda tercih edilir .

Bu nedenle, iki formunuz tamamen eşdeğerdir ve olanı #'tercih edilir.

Düzenleme : Malabarba tarafından belirtildiği gibi, bu tam olarak doğru değildir: Açık #'semboller, işlev tanımlanmadığı takdirde bayt-derleyicinin bir uyarı vermesine neden olur.

(Bunun başka bir yerde belgelendiği' gibi düz bayt-derleyicinin lambda formunu derlemesini engellediği lambda formları için geçerli olmadığına dikkat edin. Common Lisp erken bağlama yapar.)#'foo


Uyarılar hakkında doğru. Lambda'lara gelince #', derleyiciye , lambda'yı derlemesini söyler; Umarım daha net bir şekilde reform yaptım.
jch
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.