LISPouczek



STRONA SAMOUCZKA JĘZYKA LISP  



powered by FreeFind
główna

lekcje

odnośniki

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