apohllo.pl
więcej niż strona domowa...
 

Lekcja 24

Spis treści | Lekcja 23 | Lekcja 25

24. Struktury

Struktury pozwalają na przechowywanie razem pewnych logicznie powiązanych informacji. Ściślej rzecz ujmując, pozwalają na przechowywanie elementów i ich atrybutów razem. Podobne są do struktur w C czy rekordów w Pascalu, ale posiadają specjalizowane funkcje ułatwiające tworzenie i operowanie tworami tego typu.

24.1 defstruct

Instrukcja defstruct pozwala utworzenie nowej struktury i jest postaci (defstruct name field1 field2 …), gdzie name to nazwa struktury, a field1, field2, to nazwy kolejnych pól tej struktury. Po utworzeniu nowej struktury zwracana jest jej nazwa.

24.1

(defstruct rower kierownica kola rama) => rower
Poza samą strukturą instrukcja ta definiuje funkcjie make-rower, rower-kierownica, rower-kola, rower-rama. Pierwsza z nich pozwala tworzyć nowe struktury typu rower, pozostałe zaś pozwalają na dostęp do poszczególnych pól roweru.

24.2

(make-rower)                      =>  #s(rower :kierownica nil :kola nil :rama nil)
(make-rower :rama 'zielona)       =>  #s(rower :kierownica nil :kola nil :rama zielona)

Instrukcja make-rower może pobierać jako argumenty nazwy poszczególnych pól wraz z ich wartościami, co powoduje, że przy tworzeniu wyspecyfikowane pola będą inicjowane właśnie tymi wartościami a nie nil. Instrukcje typu rower-... pozwalają na dostęp do poszczególnych pól. Jako argument pobierają obiekt będący strukturą danego typu.

24.3

(setq moj-rower (make-rower))     =>  #s(rower :kierownica nil :kola nil :rama nil)
(rower-kola moj-rower)            =>  nil
(setf (rower-kola moj-rower) dwa) =>  nil
(rower-kola moj-rower)            =>  dwa

Spis treści | Lekcja 23 | Lekcja 25

lisp | Opublikowano 09:41 30-11-2010. Ostatnia modyfikacja 09:41 30-11-2010 |
comments powered by Disqus