LISP - Değişkenler

LISP'de her değişken bir symbol. Değişkenin adı, sembolün adıdır ve sembolün saklama hücresinde saklanır.

Global Değişkenler

Global değişkenler, LISP sistemi boyunca kalıcı değerlere sahiptir ve yeni bir değer belirtilinceye kadar yürürlükte kalır.

Global değişkenler genellikle defvar inşa etmek.

Örneğin

(defvar x 234)
(write x)

Yürüt düğmesine tıkladığınızda veya Ctrl + E tuşlarına bastığınızda, LISP bunu hemen yürütür ve döndürülen sonuç

234

LISP'de değişkenler için tür bildirimi olmadığından, doğrudan bir sembol için bir değer belirtirsiniz. setq inşa etmek.

Örneğin

->(setq x 10)

Yukarıdaki ifade, 10 değerini x değişkenine atar. Sembolün kendisini bir ifade olarak kullanarak değişkene başvurabilirsiniz.

symbol-value işlevi, sembol saklama yerinde saklanan değeri çıkarmanıza izin verir.

Örneğin

Main.lisp adlı yeni bir kaynak kodu dosyası oluşturun ve içine aşağıdaki kodu yazın.

(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)

Yürüt düğmesine tıkladığınızda veya Ctrl + E tuşlarına bastığınızda, LISP bunu hemen yürütür ve döndürülen sonuç olur.

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

Yerel Değişkenler

Yerel değişkenler, belirli bir prosedür içinde tanımlanır. Bir işlev tanımında bağımsız değişken olarak adlandırılan parametreler de yerel değişkenlerdir. Yerel değişkenlere yalnızca ilgili işlev içinde erişilebilir.

Global değişkenler gibi, yerel değişkenler de setq inşa etmek.

Başka iki yapı var - let ve prog yerel değişkenler oluşturmak için.

Let yapısı aşağıdaki sözdizimine sahiptir.

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

Burada var1, var2, ..varn değişken isimleridir ve val1, val2, .. valn ilgili değişkenlere atanan ilk değerlerdir.

Ne zaman letçalıştırılır, her değişkene ilgili değer atanır ve son olarak s-ifadesi değerlendirilir. Değerlendirilen son ifadenin değeri döndürülür.

Bir değişken için bir başlangıç ​​değeri dahil etmezseniz, nil.

Misal

Main.lisp adlı yeni bir kaynak kodu dosyası oluşturun ve içine aşağıdaki kodu yazın.

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

Yürüt düğmesine tıkladığınızda veya Ctrl + E tuşlarına bastığınızda, LISP bunu hemen yürütür ve döndürülen sonuç olur.

x = A y = B z = C

prog construct ayrıca ilk argüman olarak yerel değişkenlerin listesine sahiptir ve bunu, prog, ve herhangi bir sayıda s-ifadesi.

prog işlev, s-ifadelerinin listesini sırayla çalıştırır ve adında bir işlev çağrısıyla karşılaşmadığı sürece nil değerini döndürür return. Sonra argümanı return işlev değerlendirilir ve döndürülür.

Misal

Main.lisp adlı yeni bir kaynak kodu dosyası oluşturun ve içine aşağıdaki kodu yazın.

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

Yürüt düğmesine tıkladığınızda veya Ctrl + E tuşlarına bastığınızda, LISP bunu hemen yürütür ve döndürülen sonuç olur.

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