2009-11-23 6 views

Antwort

22

Der Apostroph ist ein Zitat, das dem Interpreter sagt, den folgenden Ausdruck (den Symbolnamen) nicht zu analysieren. So erhält 'add-to-list das Symbol, das den Listenwert enthält, der ausgewertet werden soll.

Um mehr über Symbole zu erfahren, lesen Sie die Symbol Dokumentation (speziell Symbol Components Symbole haben Namen, Werte, Funktionsdefinitionen und Eigenschaftslisten).

Ohne die Dokumentation zu lesen, das ist, wie ich es erkläre: Emacs Lisp evaluation strategy ist nach Wert zu übergeben (im Gegensatz zu Namen oder Verweis oder etwas anderes). Wenn das Angebot nicht vorhanden wäre, würde flymake-allowed-file-name-masks zu einem Wert ausgewertet werden, und add-to-list müsste direkt auf der Liste arbeiten. Dies würde mit den folgenden Ausnahmen funktionieren. Wenn die Liste leer wäre, gäbe es keine Möglichkeit zu ändern, worauf die ursprüngliche Variable zeigt. Aus dem gleichen Grund könnten Sie keine Elemente an der Vorderseite der Liste hinzufügen.

Um diese beiden Fälle funktionieren zu lassen, benötigen Sie den Variablennamen, damit Sie ändern können, was es zeigt.

Es wäre wahrscheinlich nützlich, Folgendes zu lesen: Introduction to Evaluation, Modifying List Variables und Modifying Existing List Structures.

Wenn Sie mit box diagrams vertraut sind, wird dies vielleicht helfen.

Stellen Sie sich vor, dass some-var verweist auf eine Liste:

somevar 
    | 
    | 
    v 
--- ---  --- ---  --- ---   
| | |--> | | |--> | | |--> nil 
--- ---  --- ---  --- ---   
    |   |   |    
    |   |   |    
    --> rose  --> violet --> buttercup 

Und wollte man etwas auf der Vorderseite dieser Liste setzen.

Wenn alle mit dem Sie arbeiten müssen, ist der Wert des Zeigers in somevar, dann ist das Beste, was Sie tun können, ist ein neues Element auf der Vorderseite der Liste setzen, aber man kann nicht wirklich ändern, was somevar Punkte (weil Sie nicht somevar haben, haben Sie es Wert). Wie so:

   somevar 
       | 
       | 
       v 
--- ---  --- ---  --- ---  --- ---   
| | |--> | | |--> | | |--> | | |--> nil 
--- ---  --- ---  --- ---  --- ---   
    |   |   |   |    
    |   |   |   |    
    --> tulip  --> rose  --> violet --> buttercup 

also Ihre eigene 'add-to-list Funktion zu schreiben, müssen Sie die Variablennamen. Wenn Sie 'add-to-list als macro geschrieben haben, hätten Sie diese Einschränkung natürlich nicht.

+1

Ich habe jetzt die perfekte Vorstellung! Es kann mit Aufruf nach Wert verglichen werden und durch Referenz in anderen Sprachen aufgerufen werden! Vielen Dank! – kjshim

Verwandte Themen