next up previous contents index
Next: Paramètre reste Up: Liste de paramètres Previous: Paramètres requis   Contents   Index

Paramètres facultatifs

Après les paramètres requis, on aura éventuellement des paramètres facultatifs (en Anglais : optional parameters). Le début des paramètres facultatifs (et donc la fin des paramètres requis) est signalé par le symbole &optional. Exemple :

* (defun f (a b &optional c d)
    (list a b c d))

F
* (f 1 2)

(1 2 NIL NIL)
* (f 1 2 3)

(1 2 3 NIL)
* (f 1 2 3 4)

(1 2 3 4)
*

Chaque paramètre facultatif peut être indiqué de trois manières différentes. Dans l'exemple ci-dessus, il est indiqué par un symbole simple. Dans ce cas, la valeur par défaut (si l'argument correspondant n'est pas fourni) est nil.

Il est possible de préciser une valeur par défaut pour un paramètre facultatif. On remplace le symbole simple par une liste de deux éléments, la variable et l'expression à évaluer si le paramètre n'est pas fourni. L'expression sera évaluée à chaque fois que le paramètre n'est pas fourni. Exemple :

* (defparameter *l* (list 9 8 7 6 5 4 3 2 1))

*L*
* (defun f (a b &optional c (d (pop *l*)))
    (list a b c d))

F
* (f 1 2 3 4)

(1 2 3 4)
* (f 1 2 3)

(1 2 3 9)
* (f 1 2 3)

(1 2 3 8)
* (f 1 2)

(1 2 NIL 7)
* (f 1 2)

(1 2 NIL 6)
*


next up previous contents index
Next: Paramètre reste Up: Liste de paramètres Previous: Paramètres requis   Contents   Index
Robert STRANDH
2001-09-28