LISP变量声明
在LISP中,每个变量都由符号表示,变量的名称是符号的名称,它存储在符号的存储单元中。
全局变量
全局变量在整个LISP系统中具有永久值,并且在指定新值之前保持有效。
全局变量通常使用defvar构造声明。
(defvar x 234) (write x)
当您单击Execute按钮或键入Ctrl+E时,LISP会立即执行它,并且返回的结果是
234
由于LISP中没有变量的类型声明,因此可以使用setq构造直接为符号指定值。
全局变量- 示例1
->(setq x 10)
上面的表达式将值10赋给变量x,您可以使用符号本身作为表达式来引用变量。
symbol-value函数允许您提取存储在符号存储位置的值。
全局变量- 示例2
(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)
当您单击执行按钮或键入Ctrl+E时,LISP会立即执行它,并且返回的结果是.
x=10 y=20 x=100 y=200
局部变量
局部变量是在给定过程中定义的。在函数定义中被命名为参数的参数也是局部变量,局部变量只能在相应的函数中访问。
与全局变量一样,也可以使用setq构造创建局部变量。
还有两个其他的构造-let和prog用于创建局部变量。
let构造具有以下语法。
(let ((var1 val1) (var2 val2).. (varn valn))<s-expressions>)
其中var1,var2,.varn是变量名,val1,val2,.valn是分配给各个变量的初始值。
局部变量- 示例1
(let ((x 'a) (y 'b)(z 'c)) (format t "x=~a y=~a z=~a" x y z))
当您单击执行按钮或键入Ctrl+E时,LISP会立即执行它,并且返回的结果是.
x=A y=B z=C
prog函数按顺序执行s表达式列表,并返回nil,除非它遇到名为return的函数调用。return函数的参数将被计算并返回。
局部变量- 示例2
(prog ((x '(a b c))(y '(1 2 3))(z '(p q 10))) (format t "x=~a y=~a z=~a" x y z))
当您单击Execute执行按钮或键入Ctrl+E时,LISP会立即执行它,并且返回的结果是.
x=(A B C) y=(1 2 3) z=(P Q 10)
祝学习愉快! (发现内容有误?请选中要编辑的内容 -> 右键 -> 修改 -> 提交!帮助我们改进教程质量)
精选教程推荐
👇 以下精选教程可能对您有帮助,拓展您的技术视野
暂无学习笔记,成为第一个分享的人吧!
您的笔记将帮助成千上万的学习者