LISP - Fonctions de retour des valeurs

Par défaut, une fonction de LISP renvoie la valeur de la dernière expression évaluée comme valeur de retour. L'exemple suivant le démontrerait.

Exemple 1

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

(defun add-all(a b c d)
   (+ a b c d)
)
(setq sum (add-all 10 20 30 40))
(write sum)
(terpri)
(write (add-all 23.4 56.7 34.9 10.0))

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

100
125.0

Cependant, vous pouvez utiliser le return-from opérateur spécial pour renvoyer immédiatement toute valeur de la fonction.

Exemple 2

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

(defun myfunc (num)
   (return-from myfunc 10)
   num
)
(write (myfunc 20))

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

10

Changez un peu le code -

(defun myfunc (num)
   (return-from myfunc 10)
   write num
)
(write (myfunc 20))

Il revient toujours -

10