Antworten:
Es gibt keinen Unterschied:
(eq 'my-add #'my-add)
ergibt t
Der #
kann vor einem lambda
Ausdruck verwendet werden, der dem Byte-Compiler angibt, dass der folgende Ausdruck bytekompiliert werden kann. Weitere Informationen finden Sie in den Dokumenten für anonyme Funktionen . Bei einem Symbol gibt es jedoch nichts zu kompilieren.
Im Allgemeinen wird es in der gedruckten Darstellung zusammen mit der linken spitzen Klammer (<) verwendet, um anzuzeigen, dass das gedruckte Objekt eine Beschreibung ist (aber nicht gelesen werden kann). Beispielsweise:
#<buffer foo.txt>
Es wird auch in Konstrukten vom Leser verwendet, um kreisförmige Strukturen darzustellen. Informationen zum Lesen der Syntax für kreisförmige Objekte finden Sie in den Dokumenten .
Und dann können Sie die Basis für ganze Zahlen bezeichnen , z #x2c -> 44
.
Plus mehr bin ich sicher.
'symbol
darstellt (quote symbol)
und #'symbol
darstellt (function symbol)
.
Die umfassende Liste finden Sie oben im Emacs-Lisp-Referenzindex .
Bearbeiten : Oder noch bequemer aus Emacs heraus:
M-x info
RET (Öffnen Sie den Info-Browser)
d m elisp
RET (Öffnen Sie das Elisp-Handbuch)
I #
RET(Listen Sie die Einträge #
im Index auf)
Ich habe diese Frage gefunden, als ich nach dem gesucht habe, was der Hash in etwas bedeutet, das ich beim Hacken gefunden habe mode-line-format
:
#("-%-" 0 3
(help-echo "Display as tooltip when mouse hovers or with display-local-help."))
Dies ist ein Format, das für Texteigenschaften in Zeichenfolgen verwendet wird, wobei:
"-%-"
, zu ordnender Text: Ein Strich und ein % -Konstrukt , die zu "Strichen führen, die ausreichen, um den Rest der Moduszeile zu füllen", was zu den berühmten Emacs führt ------
.0
, das erste Zeichen, auf das die Texteigenschaften angewendet werden.3
, das letzte Zeichen, auf das die Texteigenschaften angewendet werden, dh das gesamte "-%-"
.(help-echo "...")
, eine Eigenschaft und eine Zeichenfolge als Argument.Dies kann mit der propertize
Funktion erstellt werden :
(propertize "Hover over me!" 'help-echo '"congratulations!")
wäre das gleiche wie #("Hover over me!" 0 14 (help-echo "Congratulations!"))
:
Wenn Sie den Schriftsperrmodus verwenden, kann die Verwendung des buffer-substring
Befehls Folgendes bewirken:
(buffer-substring 1 28) ; First 27 characters in the current buffer
⇒ #(";; This buffer is for notes"
0 3
(fontified t face font-lock-comment-delimiter-face)
3 27
(fontified t face font-lock-comment-face))
Sie könnten also so etwas wie Folgendes erstellen:
#
auf ein einzelnes Symbol darin, zur Kompilierungszeit eine Diagnose zu erhalten, wenn dieses Symbol nicht definiert ist.