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