2.4.7 Тип массива

Массив (array) состоит из произвольного числа слотов для хранения или ссылки на другие объекты Lisp, расположенных в непрерывном блоке памяти. Доступ к любому элементу массива занимает примерно одинаковое время. В отличие от этого, доступ к элементу списка требует времени, пропорционального позиции элемента в списке. (Доступ к элементам в конце списка занимает больше времени, чем доступ к элементам в начале списка.)

Emacs определяет четыре типа массивов: строки, векторы, булевы векторы и таблицы символов.

Строка — это массив символов, а вектор — это массив произвольных объектов. Булев вектор может содержать только t или nil. Эти типы массивов могут иметь любую длину до самого большого фиксированного числа, в зависимости от ограничений системной архитектуры и доступной памяти. Таблицы символов — это разреженные массивы, индексируемые любым допустимым кодом символа; они могут содержать произвольные объекты.

Первый элемент массива имеет индекс ноль, второй элемент имеет индекс 1 и так далее. Это называется индексацией с нулевым началом. Например, массив из четырех элементов имеет индексы 0, 1, 2 и 3. Максимальное возможное значение индекса на единицу меньше длины массива. После создания длина массива фиксируется.

Все массивы Emacs Lisp одномерны. (Большинство других языков программирования поддерживают многомерные массивы, но это не обязательно; тот же эффект можно получить с помощью вложенных одномерных массивов.) Каждый тип массива имеет свой собственный синтаксис чтения; см. следующие разделы для получения подробной информации.

Тип массива является подмножеством типа последовательности и включает тип строки, тип вектора, тип булевого вектора и тип таблицы символов.