LISP - Variables

Dans LISP, chaque variable est représentée par un symbol. Le nom de la variable est le nom du symbole et il est stocké dans la cellule de stockage du symbole.

Variables globales

Les variables globales ont des valeurs permanentes dans tout le système LISP et restent en vigueur jusqu'à ce qu'une nouvelle valeur soit spécifiée.

Les variables globales sont généralement déclarées en utilisant le defvar construction.

Par exemple

(defvar x 234)
(write x)

Lorsque vous cliquez sur le bouton Exécuter ou tapez Ctrl + E, LISP l'exécute immédiatement et le résultat renvoyé est

234

Comme il n'y a pas de déclaration de type pour les variables dans LISP, vous spécifiez directement une valeur pour un symbole avec le setq construction.

Par exemple

->(setq x 10)

L'expression ci-dessus affecte la valeur 10 à la variable x. Vous pouvez faire référence à la variable en utilisant le symbole lui-même comme expression.

le symbol-value La fonction vous permet d'extraire la valeur stockée à l'emplacement de stockage des symboles.

Par exemple

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

(setq x 10)
(setq y 20)
(format t "x = ~2d y = ~2d ~%" x y)

(setq x 100)
(setq y 200)
(format t "x = ~2d y = ~2d" x y)

Lorsque vous cliquez sur le bouton Exécuter ou tapez Ctrl + E, LISP l'exécute immédiatement et le résultat renvoyé est.

x = 10 y = 20 
x = 100 y = 200

Variables locales

Les variables locales sont définies dans une procédure donnée. Les paramètres nommés comme arguments dans une définition de fonction sont également des variables locales. Les variables locales ne sont accessibles que dans la fonction respective.

Comme les variables globales, les variables locales peuvent également être créées à l'aide du setq construction.

Il existe deux autres constructions - let et prog pour créer des variables locales.

La construction let a la syntaxe suivante.

(let ((var1  val1) (var2  val2).. (varn  valn))<s-expressions>)

Où var1, var2, ..varn sont des noms de variables et val1, val2, .. valn sont les valeurs initiales affectées aux variables respectives.

Quand letest exécutée, chaque variable reçoit la valeur respective et enfin l' expression s est évaluée. La valeur de la dernière expression évaluée est renvoyée.

Si vous n'incluez pas de valeur initiale pour une variable, elle est affectée à nil.

Exemple

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

(let ((x 'a) (y 'b)(z 'c))
(format t "x = ~a y = ~a z = ~a" x y z))

Lorsque vous cliquez sur le bouton Exécuter ou tapez Ctrl + E, LISP l'exécute immédiatement et le résultat renvoyé est.

x = A y = B z = C

le prog construct a également la liste des variables locales comme premier argument, qui est suivi par le corps du prog, et n'importe quel nombre d'expressions s.

le prog function exécute la liste des expressions s en séquence et renvoie nil sauf si elle rencontre un appel de fonction nommé return. Puis l'argument du return La fonction est évaluée et renvoyée.

Exemple

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

(prog ((x '(a b c))(y '(1 2 3))(z '(p q 10)))
(format t "x = ~a y = ~a z = ~a" x y z))

Lorsque vous cliquez sur le bouton Exécuter ou tapez Ctrl + E, LISP l'exécute immédiatement et le résultat renvoyé est.

x = (A B C) y = (1 2 3) z = (P Q 10)