В этом разделе мы описываем функции, которые принимают массивы всех типов.
Эта функция возвращает t, если object является массивом (т.е. вектором, строкой, булевым вектором или символьной таблицей).
(arrayp [a])
⇒ t
(arrayp "asdf")
⇒ t
(arrayp (syntax-table)) ;; Символьная таблица.
⇒ t
Эта функция возвращает index-й элемент массива или записи arr. Первый элемент имеет индекс ноль.
(setq primes [2 3 5 7 11 13])
⇒ [2 3 5 7 11 13]
(aref primes 4)
⇒ 11
(aref "abcdefg" 1)
⇒ 98 ; «b» — это код ASCII 98.
Смотрите также функцию elt в разделе Последовательности.
Эта функция устанавливает index-й элемент array равным object. Она возвращает object.
(setq w (vector 'foo 'bar 'baz))
⇒ [foo bar baz]
(aset w 0 'fu)
⇒ fu
w
⇒ [fu bar baz]
;; copy-sequence создаёт копию строки для последующего изменения.
(setq x (copy-sequence "asdfasfd"))
⇒ "asdfasfd"
(aset x 3 ?Z)
⇒ 90
x
⇒ "asdZasfd"
Массив array должен быть изменяемым. См. Изменяемость.
Если array является строкой, а object не является символом, возникает ошибка wrong-type-argument. При необходимости функция преобразует однобайтовую строку в многобайтовую для вставки символа.
Эта функция заполняет массив array значением object, так что каждый элемент array становится равным object. Она возвращает array.
(setq a (copy-sequence [a b c d e f g]))
⇒ [a b c d e f g]
(fillarray a 0)
⇒ [0 0 0 0 0 0 0]
a
⇒ [0 0 0 0 0 0 0]
(setq s (copy-sequence "When in the course"))
⇒ "When in the course"
(fillarray s ?-)
⇒ "------------------"
Если array является строкой, а object не является символом, возникает ошибка wrong-type-argument.
Общие функции для последовательностей copy-sequence и length часто полезны для объектов, заведомо являющихся массивами. См. Последовательности.