鍍金池/ 教程/ Java/ LISP - 變量
LISP - 樹
LISP - 錯誤處理
LISP - 謂詞
LISP - 決策
LISP - 變量
LISP - 數(shù)組
LISP - 對象系統(tǒng)(CLOS)
LISP - 輸入和輸出
Lisp教程
LISP - 數(shù)字
LISP - 循環(huán)
LISP - 常量
LISP - 集合
LISP - 字符
LISP - 程序結(jié)構(gòu)
LISP - 文件I/O
LISP - 哈希表
LISP - 宏
LISP - 數(shù)據(jù)類型
LISP - 包
LISP - 符號
LISP - 運算符
LISP - 基本語法
LISP - 函數(shù)
LISP - 向量
LISP - 結(jié)構(gòu)
LISP - 概述介紹

LISP - 變量

在LISP中,每個變量由一個'符號'表示。變量的名稱是符號的名字,并將其存儲在碼元的存儲單元。

全局變量

全局變量有永久值在整個LISP系統(tǒng),并保持有效,直到指定的新值。

全局變量是使用defvar結(jié)構(gòu)一般聲明。

例如:

(defvar x 234)
(write x)

當(dāng)您單擊Execute按鈕,或按下Ctrl+ E,LISP立即執(zhí)行它,返回的結(jié)果是:

234

由于沒有類型聲明在LISP變量,可直接用setq一樣構(gòu)建一個符號指定一個值

例如,

->(setq x 10)

上面的表達式的值10賦給變量x,也可以使用符號本身作為一個表達式來引用該變量。

符號值函數(shù)允許提取存儲在符號存儲位置的值。

示例

創(chuàng)建一個名為main.lisp新的源代碼文件,并在其中輸入如下代碼:

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

當(dāng)單擊Execute按鈕,或按下Ctrl+ E,LISP立即執(zhí)行它,返回的結(jié)果是:

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

局部變量

局部變量在給定的過程中定義。被命名為一個函數(shù)定義中參數(shù)的參數(shù)也是局部變量。局部變量只能訪問內(nèi)相應(yīng)的功能。

像的全局變量,也可以使用本setq一樣構(gòu)建體被創(chuàng)建的局部變量。

還有其他兩種結(jié)構(gòu)- let和prog創(chuàng)建局部變量。

該let結(jié)構(gòu)的語法如下:

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

其中var1, var2, ..varn 是變量名和val1, val2, .. valn是分配給相應(yīng)的變量的初始值。

當(dāng)執(zhí)行l(wèi)et,每個變量被分配了各自的值,最后的s-expression。則返回最后一個表達式的值。

如果不包括的變量的初始值,它被分配到nil。

例子

創(chuàng)建一個名為main.lisp新的源代碼文件,并在其中輸入如下代碼:

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

當(dāng)單擊Execute按鈕,或按下Ctrl+ E,LISP立即執(zhí)行它,返回的結(jié)果是:

x = A y = B z = C

該編結(jié)構(gòu)也有局部變量作為第一個參數(shù),它后面是prog的主體,以及任意數(shù)量s-expressions的列表。

該編函數(shù)執(zhí)行s-expressions序列的列表,并返回零,除非遇到函數(shù)調(diào)用名返回。然后函數(shù)參數(shù)計算并返回。

例子

創(chuàng)建一個名為main.lisp新的源代碼文件,并在其中輸入如下代碼:

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

當(dāng)單擊Execute按鈕,或按下Ctrl+ E,LISP立即執(zhí)行它,返回的結(jié)果是:

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