Spec-Zone.ru › Elisp

Спецификаторы типов

Спецификатор типа — это выражение, обозначающее тип. Тип представляет собой множество возможных значений. Спецификаторы типов делятся на примитивные и составные типы.

Спецификаторы типов используются для различных целей, в том числе для документирования интерфейсов функций с помощью объявлений (см. Форма declare), указания типов слотов структур (см. Структуры в Расширениях Common Lisp для GNU Emacs Lisp), проверки типов с помощью cl-the (см. Объявления в Расширениях Common Lisp для GNU Emacs Lisp), а также помощи нативному компилятору (см. Компиляция Lisp в машинный код) при оптимизации генерации кода и выводе сигнатур функций.

Примитивные спецификаторы типов

Примитивные спецификаторы типов — это базовые типы (то есть не составленные из других спецификаторов типов).

Встроенные примитивные типы (такие как integer, float, string и т. д.) перечислены в разделе Иерархия типов объектов Emacs Lisp.

Составные спецификаторы типов

Составные типы предназначены для определения более сложных или точных спецификаций типов посредством объединения или изменения более простых типов.

Список составных спецификаторов типов:

(or type-1 … type-n)

Спецификатор типа or описывает тип, которому соответствует хотя бы один из указанных типов.

(and type-1 … type-n)

Аналогично, спецификатор типа and описывает тип, которому соответствуют все указанные типы.

(not type)

Спецификатор типа not определяет любой тип, кроме указанного.

(member value-1 … value-n)

Спецификатор типа member позволяет указать тип, включающий только явно перечисленные значения.

(function (arg-1-type … arg-n-type) return-type)

Спецификатор типа function используется для описания типов аргументов и возвращаемого значения функции. Типы аргументов можно чередовать с символами &optional и &rest, чтобы сопоставить их с аргументами функции (см. Особенности списков аргументов).

Следующий спецификатор типа представляет функцию, у которой первый параметр имеет тип symbol, второй необязательный параметр — тип float, а возвращаемое значение имеет тип integer:

 (function (symbol &optional float) integer)
(integer lower-bound upper-bound)

Спецификатор типа integer также можно использовать как составной спецификатор типа для определения подмножества целых значений с помощью задания диапазона. Это позволяет точно указать, какие целые числа допустимы для данного типа.

lower-bound — минимальное целое значение в диапазоне, а upper-bound — максимальное. Вместо нижней или верхней границы можно использовать *, чтобы указать отсутствие ограничения.

Следующий пример представляет все целые числа от -10 до 10:

(integer -10 10)

Следующий пример представляет единственное значение 10:

(integer 10 10)

Следующий пример представляет все целые числа от минус бесконечности до 10:

(integer * 10)

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

Spec-Zone.ru

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