LISP - Paramètres de repos

Certaines fonctions doivent accepter un nombre variable d'arguments.

Par exemple, le formatLa fonction que nous utilisons a besoin de deux arguments obligatoires, le flux et la chaîne de contrôle. Cependant, après la chaîne, il a besoin d'un nombre variable d'arguments en fonction du nombre de valeurs à afficher dans la chaîne.

De même, la fonction +, ou la fonction * peut également prendre un nombre variable d'arguments.

Vous pouvez fournir ce nombre variable de paramètres en utilisant le symbole &rest.

L'exemple suivant illustre le concept -

Exemple

Créez un nouveau fichier de code source nommé main.lisp et tapez le code suivant dedans.

(defun show-members (a b &rest values) (write (list a b values)))
(show-members 1 2 3)
(terpri)
(show-members 'a 'b 'c 'd)
(terpri)
(show-members 'a 'b)
(terpri)
(show-members 1 2 3 4)
(terpri)
(show-members 1 2 3 4 5 6 7 8 9)

Lorsque vous exécutez le code, il renvoie le résultat suivant -

(1 2 (3))
(A B (C D))
(A B NIL)
(1 2 (3 4))
(1 2 (3 4 5 6 7 8 9))