Вектор (vector) — это общий массив, элементы которого могут быть любыми объектами Lisp. (В отличие от этого, элементы строки могут быть только символами. См. Строки и символы.) В Emacs векторы используются для множества целей: как последовательности ключей (см. Последовательности ключей), как таблицы поиска символов (см. Создание и интернирование символов), как часть представления байт-скомпилированной функции (см. Байт-компиляция) и многое другое.
Как и другие массивы, векторы используют индексацию с нулевым началом: первый элемент имеет индекс 0.
Векторы выводятся в квадратных скобках, окружающих элементы. Таким образом, вектор, элементы которого — символы a, b и a, выводится как [a b a]. Вы можете записывать векторы таким же образом во вводе Lisp.
Вектор, как и строка или число, считается константой для вычисления: результат его вычисления — это тот же вектор. Это не вычисляет и даже не проверяет элементы вектора. См. Формы, самовычисляемые. Векторы, записанные в квадратных скобках, не следует изменять с помощью aset или других деструктивных операций. См. Изменяемость.
Ниже приведены примеры, иллюстрирующие эти принципы:
(setq avector [1 two '(three) "four" [five]])
⇒ [1 two '(three) "four" [five]]
(eval avector)
⇒ [1 two '(three) "four" [five]]
(eq avector (eval avector))
⇒ t