6.4 Векторы

Вектор (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