LISPouczek



STRONA SAMOUCZKA JĘZYKA LISP  



powered by FreeFind
główna

lekcje

odnośniki

pliki
<< 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 >>