Spec-Zone.ru › Elisp

Функции, работающие с массивами

В этом разделе описаны функции, принимающие массивы всех типов.

Функция: arrayp объект

Эта функция возвращает t если объект является массивом (т.е., вектором, строкой, вектором bool или таблицей char).

(arrayp [a])
     ⇒ t
(arrayp "asdf")
     ⇒ t
(arrayp (syntax-table))    ;; A char-table.
     ⇒ t
Функция: aref массив индекс

Эта функция возвращает элемент массива или записи массив с индексом индекс. Первый элемент имеет индекс ноль.

(setq primes [2 3 5 7 11 13])
     ⇒ [2 3 5 7 11 13]
(aref primes 4)
     ⇒ 11
(aref "abcdefg" 1)
     ⇒ 98           ; ‘b’ is ASCII code 98.

См. также функцию elt, в Функции для последовательностей.

Функция: aset массив индекс объект

Эта функция устанавливает элемент массива с индексом индекс в значение объект. Возвращает объект.

(setq w (vector 'foo 'bar 'baz))
     ⇒ [foo bar baz]
(aset w 0 'fu)
     ⇒ fu
w
     ⇒ [fu bar baz]
;; copy-sequence copies the string to be modified later.
(setq x (copy-sequence "asdfasfd"))
     ⇒ "asdfasfd"
(aset x 3 ?Z)
     ⇒ 90
x
     ⇒ "asdZasfd"

Массив должен быть изменяемым. См. Изменяемость.

Если массив является строкой, а объект не является символом, возникает ошибка wrong-type-argument. Функция преобразует однобайтовую строку в многобайтовую, если необходимо, для вставки символа.

Функция: fillarray массив объект

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

(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 ?-)
     ⇒ "------------------"

Если массив является строкой, а объект не является символом, возникает ошибка wrong-type-argument.

Общие функции для последовательностей copy-sequence и length часто полезны для объектов, известных как массивы. См. Функции для последовательностей.

Copyright © 1990-1996, 1998-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Array-Functions.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API