List 語言 set和setq差別

2021-06-12 07:38:47 字數 759 閱讀 5453

在lisp中,如果我們希望對乙個變數賦值,可以使用set函式,用法如下:

(set 『my-value "my string")
上面的**是對變數my-value進行賦值,值是"my string"。注意其中的'my-value前面是有乙個單引號的。

我們知道,在lisp中,'my-value其實是(quote my-value)的簡寫,所以上面的set函式**也可以寫成這樣:

(set (quote my-value) "my string")

不過,因為set函式使用的次數很多,每次都要使用quote或者在變數名前加乙個單引號比較麻煩,於是發展了setq函式,setq中的q字母就是代表quote的意思,使用setq函式就可以這樣寫了:

(setq my-value "my string")
上面的**也是對變數my-value進行賦值,值是"my string",是不是比set函式好用一點?

如果只是這樣使用,可以認為set和setq是沒有差別的,只是格式不同。

但是,事實上setq比set函式要高階一些,setq函式還可以同時對多個變數進行賦值,像下面這樣:

(setq my-value1 "my string 1" my-value2 "my string 2")
上面的**同時對變數my-value1和my-value2進行賦值。

而set函式就不能這樣使用了。

list和set的區別

集合list作為佇列來使用,先存入的資料會被先取出 listlist new arraylist list.add 1 list.add 2 list.add 3 取出來的結果為 1,2,3 集合set作為堆疊來使用,先存入的資料會後取出 setset new hashset set.add 1 s...

集合中List和Set

collection介面有兩個子介面 list 列表 set 集 list 可存放重複元素,元素訪問是有序的。set 不可以存放重複元素,元素訪問是無序 的list集合中常用的類 vector 執行緒安全,但速度慢,已被 arraylist 替代。arraylist 執行緒不安全,查詢速度快。lin...

list和set的區別

list的特點 list元素有放入順序,且是可以重複的。public class listtest for string str list iteratorit list.iterator while it.hasnext set的特點 set是無放入順序的,且不能重複的。set取值不能使用普通fo...