Вектора 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