|
|
<< 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
|
<< lekcja 16 | lekcja 18 >> |