6.5 Функции для векторов

Ниже приведены некоторые функции, связанные с векторами:

Функция: vectorp object

Эта функция возвращает t, если object является вектором.

(vectorp [a])
     ⇒ t
(vectorp "asdf")
     ⇒ nil
Функция: vector &rest objects

Эта функция создает и возвращает вектор, элементы которого — это аргументы, objects.

(vector 'foo 23 [bar baz] "rats")
     ⇒ [foo 23 [bar baz] "rats"]
(vector)
     ⇒ []
Функция: make-vector length object

Эта функция возвращает новый вектор, состоящий из length элементов, каждый из которых инициализирован значением object.

(setq sleepy (make-vector 9 'Z))
     ⇒ [Z Z Z Z Z Z Z Z Z]
Функция: vconcat &rest sequences

Эта функция возвращает новый вектор, содержащий все элементы sequences. Аргументы sequences могут быть обычными списками, векторами, строками или булевыми векторами. Если не передается ни одного sequences, возвращается пустой вектор.

Возвращаемое значение либо пустой вектор, либо новый непустой вектор, который не равен eq какому-либо существующему вектору.

(setq a (vconcat '(A B C) '(D E F)))
     ⇒ [A B C D E F]
(eq a (vconcat a))
     ⇒ nil
(vconcat)
     ⇒ []
(vconcat [A B C] "aa" '(foo (6 7)))
     ⇒ [A B C 97 97 foo (6 7)]

Функция vconcat также позволяет использовать объекты байтового кода в качестве аргументов. Это специальная функция, которая облегчает доступ ко всему содержимому объекта байтового кода. См. Объекты функций замыкания.

Для других функций конкатенации см. mapconcat в Функции отображения, concat в Создание строк и append в Построение конс-ячеек и списков.

Функция append также предоставляет способ преобразования вектора в список с теми же элементами:

(setq avector [1 two (quote (three)) "four" [five]])
     ⇒ [1 two '(three) "four" [five]]
(append avector nil)
     ⇒ (1 two '(three) "four" [five])