Объект массив содержит ячейки, в которых хранится некоторое количество других объектов Lisp, называемых элементами массива. Любой элемент массива может быть доступен за постоянное время. Напротив, время доступа к элементу списка пропорционально позиции этого элемента в списке.
В Emacs определены четыре типа массивов, все одномерные:
строки (см. Тип «строка»), векторы (см. Тип «вектор»), булевы векторы (см. Тип «булев вектор») и
символьные таблицы (см. Тип «символьная таблица»). Векторы и символьные таблицы могут содержать элементы любого типа, но строки могут содержать только символы, а булевы векторы — только t и nil.
Все четыре вида массивов имеют следующие общие характеристики:
aref и aset соответственно (см. Функции для работы с массивами).
При создании массива (за исключением символьной таблицы) необходимо указать его длину. Длину символьной таблицы указать нельзя, поскольку она определяется диапазоном кодов символов.
В принципе, если вам нужен массив текстовых символов, вы можете использовать как строку, так и вектор. На практике мы всегда выбираем строки для таких приложений по четырём причинам:
Напротив, для массива символов ввода с клавиатуры (например, последовательности клавиш) вектор может оказаться необходимым, поскольку многие символы ввода с клавиатуры выходят за пределы диапазона, помещающегося в строку. См. Ввод последовательности клавиш.