Skip to content

Latest commit

 

History

History
62 lines (33 loc) · 1.8 KB

File metadata and controls

62 lines (33 loc) · 1.8 KB

在LISP中,每个变量都用符号表示。变量的名称是符号的名称,并存储在符号的存储单元中。

全局变量

全局变量在整个LISP系统中具有永久值,并且在指定新值之前一直有效。

全局变量通常使用 defvar 构造声明。

(defvar x 234)
(write x)

由于 LISP 中没有变量的类型声明,因此可以直接使用 setq 构造为符号指定值。

->(setq x 10)

main.lisp

上面的表达式将值10分配给变量x。您可以使用符号本身作为表达式来引用变量。

使用符号值功能可以提取存储在符号存储位置的值。

局部变量

局部变量是在给定过程中定义的。在函数定义中被称为自变量的参数也是局部变量。 局部变量只能在相应的函数中访问。

像全局变量一样,也可以使用 setq 构造来创建局部变量。

还有另外两个结构- letprog 创建局部变量。

let构造具有以下语法。

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

其中 var1,var2,.. varn 是变量名称,而 val1,val2,.. valn 是分配给各个变量的初始值。

let 被执行时,每个变量被分配了相应的值,最后的 s 表达式进行求值。 返回最后计算的表达式的值。

如果不包括变量的初始值,则将其分配为 nil

创建名为 main.lisp 的新源代码文件,然后在其中键入以下代码。

main.lisp

prog 构造还具有本地变量列表作为其第一个参数,其后是 prog 的主体以及任意数量的 s 表达式。

prog 函数按顺序执行 s 表达式列表,并返回 nil,除非遇到名为 return 的函数调用。然后,对返回函数的参数求值并返回。

main.lisp