向量(vector) 是一种通用数组,其元素可以是任意 Lisp 对象。(与之相对,字符串的元素只能是字符。See 字符串与字符。)向量在 Emacs 中有多种用途:用作按键序列(see Key Sequences)、用作符号查找表(see 创建与编入符号)、作为字节编译函数表示形式的一部分(see 字节编译)等。
与其他数组一样,向量使用从零开始的索引:第一个元素的索引为 0。
向量在打印时会用方括号把元素括起来。因此,元素为符号 a、b、a 的向量会被打印为 [a b a]。你在 Lisp 输入中也可以用同样的方式书写向量。
向量与字符串、数字一样,在求值时被视为常量:对它求值的结果就是向量本身。这一过程不会对向量的元素进行求值,甚至不会检查。See 自求值形式。
用方括号书写的向量不应该通过 aset 或其他破坏性操作进行修改。See 可变性。
以下示例说明了这些规则:
(setq avector [1 two '(three) "four" [five]])
⇒ [1 two '(three) "four" [five]]
(eval avector)
⇒ [1 two '(three) "four" [five]]
(eq avector (eval avector))
⇒ t