您的位置:首页 > 其它

Common Lisp笔记(2)

2016-03-23 21:14 190 查看

Common Lisp 创建变量

Common Lisp 是动态类型的,类型错误会被动态的检测到。

Common Lisp 是强类型的,因为所有的类型错误都将被检测到,无法将一个对象作为其不属于的类型的实例对待。

Common Lisp 中所有的值都是对象的引用。因此,将一个变量赋予新值会改变该变量所指向的队形,而对之前引用的对象没有影响。

let操作符引入新变量

形式:
(let (variable*)

body-form*)


最后一个 variable 求值被返回。

其中 * 代表可以有多个 variable。每个 variable都是变量初始化形式,省略为 nil。

例如:
(let (a 1) (b 2) c)


let 内部可以重新用 let 进行绑定,其作用范围类似于c等其他语言。



变量类型

Common Lisp 支持两种变量类型,词法变量 (lexical)和动态变量(dynamic),分别对应其他语言的局部变量和全局变量

创建全局变量

关键词 defvar 和 defparameter

两种形式都接受一个变量名,一个初始值以及一个可选的文档字符串。

全局变量的命名一般以 * 开头和结尾

例如:
(defvar *num* 0

"the num is 0)


如果行重新定义这个变量,只要重新绑定它即可,如用 let

defvar 和 defparameter的区别

defparameter 总是将初始值赋值给变量,而 defvar 只有当变量未定义时这样做。

defvar 可以不带初始值使用,这种变量称为未绑定的 unbound

定义全局变量的优势

全局变量优势在于不必到处传递他们,多种语言的标准输入输出都是用的全局变量就是处于这个原因。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  lisp