Spec-Zone.ru › Elisp

Вектора bool

Вектор bool очень похож на вектор, за исключением того, что он хранит только значения t и nil. Если вы попытаетесь сохранить любое значение, отличное от nil, в элемент вектора bool, эффект будет заключаться в сохранении t в этом месте. Как и во всех массивах, индексы вектора bool начинаются с 0, а длина не может быть изменена после создания вектора bool. Векторы bool являются константами при вычислении.

Несколько функций работают конкретно с векторами bool; помимо этого, вы можете манипулировать ими с помощью тех же функций, которые используются для других типов массивов.

Функция: make-bool-vector длина начальное

Возвращает новый вектор bool длиной длина элементов, каждый из которых инициализирован значением начальное.

Функция: bool-vector &rest объекты

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

Функция: bool-vector-p объект

Возвращает t, если объект является вектором bool, и nil в противном случае.

Также существуют некоторые функции для работы с векторами bool, описанные ниже:

Функция: bool-vector-exclusive-or a b &optional c

Возвращает поразрядное исключающее ИЛИ векторов bool a и b. Если необязательный аргумент c задан, результат этой операции сохраняется в c. Все аргументы должны быть векторами bool одинаковой длины.

Функция: bool-vector-union a b &optional c

Возвращает поразрядное ИЛИ векторов bool a и b. Если необязательный аргумент c задан, результат этой операции сохраняется в c. Все аргументы должны быть векторами bool одинаковой длины.

Функция: bool-vector-intersection a b &optional c

Возвращает поразрядное И векторов bool a и b. Если необязательный аргумент c задан, результат этой операции сохраняется в c. Все аргументы должны быть векторами bool одинаковой длины.

Функция: bool-vector-set-difference a b &optional c

Возвращает разность множеств векторов bool a и b. Если необязательный аргумент c задан, результат этой операции сохраняется в c. Все аргументы должны быть векторами bool одинаковой длины.

Функция: bool-vector-not a &optional b

Возвращает дополнение множества вектора bool a. Если необязательный аргумент b задан, результат этой операции сохраняется в b. Все аргументы должны быть векторами bool одинаковой длины.

Функция: bool-vector-subsetp a b

Возвращает t, если каждое значение t в a также t в b, nil в противном случае. Все аргументы должны быть векторами bool одинаковой длины.

Функция: bool-vector-count-consecutive a b i

Возвращает количество последовательных элементов в a, равных b, начиная с i. a — это вектор bool, b — это t или nil, а i — это индекс в a.

Функция: bool-vector-count-population a

Возвращает количество элементов, которые t в векторе bool a.

Печатный вид представляет до 8 логических значений как один символ:

(bool-vector t nil t nil)
     ⇒ #&4"^E"
(bool-vector)
     ⇒ #&0""

Вы можете использовать vconcat для вывода вектора bool, как и других векторов:

(vconcat (bool-vector nil t nil t))
     ⇒ [nil t nil t]

Вот еще один пример создания, проверки и обновления вектора bool:

(setq bv (make-bool-vector 5 t))
     ⇒ #&5"^_"
(aref bv 1)
     ⇒ t
(aset bv 3 nil)
     ⇒ nil
bv
     ⇒ #&5"^W"

Эти результаты логичны, потому что двоичные коды для управления _ и управления W составляют 11111 и 10111 соответственно.

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/Bool_002dVectors.html

Spec-Zone.ru

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