6.2 Массивы

Объект массив содержит ячейки, в которых хранится некоторое количество других объектов Lisp, называемых элементами массива. Любой элемент массива может быть доступен за постоянное время. Напротив, время доступа к элементу списка пропорционально позиции этого элемента в списке.

В Emacs определены четыре типа массивов, все одномерные: строки (см. Тип «строка»), векторы (см. Тип «вектор»), булевы векторы (см. Тип «булев вектор») и символьные таблицы (см. Тип «символьная таблица»). Векторы и символьные таблицы могут содержать элементы любого типа, но строки могут содержать только символы, а булевы векторы — только t и nil.

Все четыре вида массивов имеют следующие общие характеристики:

При создании массива (за исключением символьной таблицы) необходимо указать его длину. Длину символьной таблицы указать нельзя, поскольку она определяется диапазоном кодов символов.

В принципе, если вам нужен массив текстовых символов, вы можете использовать как строку, так и вектор. На практике мы всегда выбираем строки для таких приложений по четырём причинам:

Напротив, для массива символов ввода с клавиатуры (например, последовательности клавиш) вектор может оказаться необходимым, поскольку многие символы ввода с клавиатуры выходят за пределы диапазона, помещающегося в строку. См. Ввод последовательности клавиш.