LISP - Variabel

Dalam LISP, setiap variabel diwakili oleh a symbol. Nama variabel adalah nama simbol dan disimpan di sel penyimpanan simbol.

Variabel Global

Variabel global memiliki nilai permanen di seluruh sistem LISP dan tetap berlaku sampai nilai baru ditentukan.

Variabel global umumnya dideklarasikan menggunakan defvar membangun.

Sebagai contoh

(defvar x 234)
(write x)

Ketika Anda mengklik tombol Execute, atau mengetik Ctrl + E, LISP segera menjalankannya dan hasil yang dikembalikan adalah

234

Karena tidak ada deklarasi tipe untuk variabel di LISP, Anda secara langsung menentukan nilai untuk simbol dengan setq membangun.

Sebagai contoh

->(setq x 10)

Ekspresi di atas memberikan nilai 10 ke variabel x. Anda dapat merujuk ke variabel menggunakan simbol itu sendiri sebagai ekspresi.

Itu symbol-value fungsi memungkinkan Anda untuk mengekstrak nilai yang disimpan di tempat penyimpanan simbol.

Sebagai contoh

Buat file kode sumber baru bernama main.lisp dan ketikkan kode berikut di dalamnya.

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

Ketika Anda mengklik tombol Execute, atau mengetik Ctrl + E, LISP segera menjalankannya dan hasil yang dikembalikan adalah.

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

Variabel Lokal

Variabel lokal didefinisikan dalam prosedur tertentu. Parameter yang disebut sebagai argumen dalam definisi fungsi juga merupakan variabel lokal. Variabel lokal hanya dapat diakses di dalam fungsi masing-masing.

Seperti variabel global, variabel lokal juga dapat dibuat menggunakan setq membangun.

Ada dua konstruksi lainnya - let dan prog untuk membuat variabel lokal.

Konstruksi let memiliki sintaks berikut.

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

Di mana var1, var2, ..varn adalah nama variabel dan val1, val2, .. valn adalah nilai awal yang ditetapkan ke masing-masing variabel.

Kapan letdijalankan, setiap variabel diberi nilai masing-masing dan terakhir ekspresi s dievaluasi. Nilai ekspresi terakhir yang dievaluasi dikembalikan.

Jika Anda tidak menyertakan nilai awal untuk variabel, itu akan ditetapkan ke nil.

Contoh

Buat file kode sumber baru bernama main.lisp dan ketikkan kode berikut di dalamnya.

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

Ketika Anda mengklik tombol Execute, atau mengetik Ctrl + E, LISP segera menjalankannya dan hasil yang dikembalikan adalah.

x = A y = B z = C

Itu prog konstruk juga memiliki daftar variabel lokal sebagai argumen pertamanya, yang diikuti oleh tubuh dari prog, dan sejumlah ekspresi-s.

Itu prog function mengeksekusi daftar s-ekspresi secara berurutan dan mengembalikan nihil kecuali jika menemukan panggilan fungsi bernama return. Kemudian argumen dari return fungsi dievaluasi dan dikembalikan.

Contoh

Buat file kode sumber baru bernama main.lisp dan ketikkan kode berikut di dalamnya.

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

Ketika Anda mengklik tombol Execute, atau mengetik Ctrl + E, LISP segera menjalankannya dan hasil yang dikembalikan adalah.

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