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

Lekcja 17

Spis treści | Lekcja 16 | Lekcja 18

17. Argumenty opcjonalne.

W praktyce programistycznej często zdarzają się sytuacje, w których wywołujemy pewne funkcje z tym samym zestawem pewnych argumentów. Zamiast pisać osobne funkcje przypadku, w którym wykorzystujemy tylko częśćargumentów oraz aby nie zaśmiecać przestrzeni nazw funkcji, możemy skorzystać z argumentów opcjonalnych. Jeśli w wywołaniu funkcji nie pojawią sięargumenty opcjonalne, to zostaną im przypisane wartości domyślne. Ten mechanizm czyni kod znacznie czytelniejszym i zwięzłym. To, że argumenty jakiejś funkcji są opcjonalne zapisujemy w następujący sposób

(defun f (arg1 arg2 arg3 ... argn 
    &optional (o-arg1 val1) (o-arg2 val2) ...(o-argm valm)) 
    body)

Argumenty – o-arg1 … o-argm występujące po słowie kluczowym &optional, traktowane są jak argumenty opcjonalne. Jeśli wywołanie funkcji zawiera mniej argumentów niż n+m, to argumentom począwszy od tego, dla którego pierwszego zabrakło wartości (jeśli w wywołaniu było p argumentów, to argumentem tym jest argument opcjonalny o numerze równym p-n+1) przypisywane są ich wartości domyślne vali. Jeśli argument opcjonalny podany jest nie w postaci listy, lecz samej nazwy o-argi, to jego wartością domyślną jest nil.

17.1

(defun para (x &optional y)
     (format t "~&Wartosc x: ~S" x)
     (format t "~&Wartosc y: ~S" y)
)                                   =>  para
(para 3 5)
Wartosc x: 3
Wartosc y: 5
                                    =>  nil
(para 3)
Wartosc x: 3
Wartosc y: nil
                                    =>  nil

Spis treści | Lekcja 16 | Lekcja 18

lisp | Opublikowano 07:51 30-11-2010. Ostatnia modyfikacja 07:51 30-11-2010 |
comments powered by Disqus