Каждая форма slot-description в форме defstruct может указывать один или
более параметров слота. slot-option является парой ключевого символа и
значения (которое не является формой для вычисления, а является просто
значением). Например:
(defstruct ship
(x-position 0.0
:type short-float)
(y-position 0.0
:type short-float)
(x-velocity 0.0
:type short-float)
(y-velocity 0.0
:type short-float)
(mass *default-ship-mass*
:type short-float
:read-only t))
Этот пример содержит определение, что каждый слот будет всегда
содержать короткое с плавающей точкой число, и что последний слот не
может быть изменён после создания корабля ship. Доступные параметры для
слотов slot-options:
-
:type
Параметр :type type указывает, что содержимое слота будет
всегда принадлежать указанному типу данных. Он похож на
аналогичную декларацию для переменной или функции. И конечно
же, он также декларирует возвращаемый функцией доступа тип.
Реализация может проверять или не проверять тип нового объекта
при инициализации или присваивании слота. Следует отметить,
что форма аргумента type не вычисляется, и следовательно должна
быть корректным спецификатором типа.
-
:read-only
Параметр :read-only x, при x не nil, указывает , что
этот слот не может быть изменён. Он будет всегда содержать
значение, указанное во время создания экземпляра структуры.
setf не принимает функцию доступа к данному слоту. Если x nil,
этот параметр ничего не меняет. Следует отметить, что форма
аргумента x не вычисляется.
Следует отметить, что невозможно определить параметр для слота без
указания значение по-умолчанию.