2009-11-23 15 views

Odpowiedz

22

Apostrof to cytat, który nakazuje interpreterowi, aby nie parsował następującego wyrażenia (nazwy symbolu). Tak więc, 'add-to-list otrzymuje symbol, który zawiera wartość listy, która ma być oceniona. Aby uzyskać więcej informacji na temat symboli, przeczytaj dokumentację

(w szczególności: Symbol Components symbole mają nazwy, wartości, definicje funkcji i listy właściwości).

Nie przeczytawszy dokumentacji, tak to wyjaśniam: Emaks-sepp evaluation strategy jest przekazywany według wartości (w przeciwieństwie do nazwy lub odniesienia lub czegoś innego). Gdyby nie było cytatu, wartość flymake-allowed-file-name-masks została oszacowana, a add-to-list musiałaby pracować bezpośrednio na liście. To działałoby, z następującymi wyjątkami. Gdyby lista była pusta, nie byłoby możliwości zmiany tego, na co wskazywała pierwotna zmienna. Z tego samego powodu nie można dodawać elementów na początku listy.

Aby te dwie sprawy działały, potrzebna jest nazwa zmiennej, aby można było zmienić jej punkty.

Przydałoby się prawdopodobnie przeczytać: Introduction to Evaluation, Modifying List Variables i Modifying Existing List Structures.

Jeśli znasz box diagrams, być może to pomoże.

wyobrazić, że some-var punktów do listy:

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

i chcesz umieścić coś na przedniej części tej listy.

Jeśli wszystko trzeba pracować z jest wartością wskaźnika w somevar, to najlepsze, co możesz zrobić, to umieścić nowy element na początku listy, ale nie można faktycznie zmodyfikować co somevar punkty (ponieważ nie masz somevar, masz wartość o wartości). Tak:

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

Tak więc, aby napisać własny 'add-to-list funkcji, musisz podać nazwę zmiennej.

Oczywiście, gdybyś napisał 'add-to-list jako macro, nie miałbyś takiego ograniczenia.

+1

Mam idealną koncepcję już teraz! Można go porównać z połączeniem według wartości i wywoływać przez odniesienie w innych językach! Dzięki! – kjshim

Powiązane problemy