Treba prechádzať zoznam vlastností, ktorý vráti SYMBOL-PLIST a vrátiť hodnotu vzťahujúcu sa k zadanému atribútu.

SETF nastaví hodnotu atribútu symbolu
GET získa hodnotu daného atribútu daného symbolu
SYMBOL-PLIST vráti pre daný symbol zoznam
(atribut1 hodnota1 ... atributn hodnotan).


; Prechádza atribúty (nepárne prvky zoznamu) 
; a prvok za daným atribútom vráti.

(defun vrath (a zoz)
 (cond ((null zoz) NIL)
       ((equal a (first zoz)) (first (rest zoz)))
       (T (vrath a (rest (rest zoz))))
 )  
)

; Hlavná funkcia.
(defun my-get (symbol atribut)
 (vrath atribut (symbol-plist symbol))
)

; Príklady:
(setf (get 'symb 'ATRIBUT1) 'HODNOTA1)
(setf (get 'symb 7) 'HODNOTA2)
(symbol-plist 'symb)  ; -> (7 HODNOTA2 ATRIBUT1 HODNOTA1)
(get 'symb 'ATRIBUT1) ; -> HODNOTA1 (get 'symb 7) ; -> HODNOTA2
(my-get 'symb 'ATRIBUT1) ; -> HODNOTA1 (my-get 'symb 7) ; -> HODNOTA2

Autori[ ZADANIE | AKO ZAČAŤ | RIEŠENIE ]
Posledná aktualizácia 4. 9. 2001
back  home  next