ELisp里setq和set的区别

ELisp里setq和set的区别

在ELisp里面对变量进行赋值可以使用setq和set两种函数。这两种函数是不一样的。Setq里面的q是quote的意思,也就是它会对第一个参数自动做quote,而set则不会,第一个参数会向一般函数一样取它的值。

看看下面的程序:

ELisp里setq和set的区别

第一个(setq one 50)是会把50赋给one这个变量,所以第一个输出是50。

第二个(set 'two 60)是手动将two这个symbol给quote了一下,所以相当于(setq two 60),所以是把60赋给了变量two。

第三个(setq three 'one)是把one这个symbol给赋给了three这个变量。打印three就是打印one的名字。

第四个(set three 70)首先先要取three的值,这个时候three的值是one这个symbol, 所以它其实是把70赋给了one,three这个变量没有变化,存的还是one这个symbol。而one的值则是改变成了70。

这个程序的输出结果如下:

ELisp里setq和set的区别


分享到:


相關文章: