<< 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
|
<< lekcja 23 | lekcja 25 >> |