ELisp编程六:定义变量

给变量赋值

set

(set arg1 arg2) 这种语法将arg2设置为arg1的值

比如:

 (set ‘flowers '(rose violet daisy buttercup))

这是创建了一个symbol flowers,将(rose violet daisy buttercup) list 赋值给了flowers的value域。

稍后,可以直接使用flowers,就像用变量一样,实际上是使用的它的value域存放的list,比如:

(print flowers)

也将输出(rose violet daisy buttercup)


注意,单引号在这里是告诉解析器不要试图对flowers和(rose violet daisy buttercup)求值。

如果set语句去除flowers前面的单引号,那么flowers就会被求值。因为这里flowers还没有被定义,求值就会错误,会看到如下错误:

error: (void-variable flowers)

应该还是很好理解的。


setq

setq语句是set的简化版本,当set的第一个参数如果要加单引号的话,就可用setq来简化。比如下面的用法:

(setq flowers '(rose violet daisy buttercup))
setq还支持一次多定义几个symbol,比如:

(setq trees '(pine fir oak maple)
           herbivores '(gazelle antelope zebra))

defvar

和set有差别:

1.如果一个变量没有值,则赋给它初始值

2.如果一个变量已经有值,则什么也不做

3.提供了一个字符串参数用于描述这个变量。

(defvar 变量名 变量值
  "变量描述文档")
C-h v 可以看到该变量的描述文档

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值