Common Lisp笔记(2)

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

  • 定义全局变量的优势
    全局变量优势在于不必到处传递他们,多种语言的标准输入输出都是用的全局变量就是处于这个原因。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值