下面是一些与向量相关的函数:
如果 object 是向量,该函数返回 t。
(vectorp [a])
⇒ t
(vectorp "asdf")
⇒ nil
该函数创建并返回一个向量,其元素为参数 objects。
(vector 'foo 23 [bar baz] "rats")
⇒ [foo 23 [bar baz] "rats"]
(vector)
⇒ []
该函数返回一个新的向量,该向量包含 length 个元素,且每个元素都初始化为 object。
(setq sleepy (make-vector 9 'Z))
⇒ [Z Z Z Z Z Z Z Z Z]
该函数返回一个新向量,其中包含 sequences 的所有元素。参数 sequences 可以是合法列表、向量、字符串或布尔向量。若未传入任何 sequences 参数,则返回空向量。
返回值要么是空向量,要么是一个新创建的非空向量 —— 该向量与任何已存在的向量都不满足 eq 相等性判断。
(setq a (vconcat '(A B C) '(D E F)))
⇒ [A B C D E F]
(eq a (vconcat a))
⇒ nil
(vconcat)
⇒ []
(vconcat [A B C] "aa" '(foo (6 7)))
⇒ [A B C 97 97 foo (6 7)]
vconcat 函数也允许将字节码函数对象作为参数。这是一项特殊功能,用于方便地访问字节码函数对象的全部内容。See 闭包函数对象。
关于其他拼接函数,可参见:映射函数 中的 mapconcat、创建字符串 中的 concat,以及 构建 cons 单元与列表 中的 append。
函数 append 还提供了一种将向量转换成包含相同元素的列表的方法:
(setq avector [1 two (quote (three)) "four" [five]])
⇒ [1 two '(three) "four" [five]]
(append avector nil)
⇒ (1 two '(three) "four" [five])