Common Lisp the Language, 2nd Edition
Next: Defstruct Options
Up: Structures
Previous: Using the Automatically
Each
slot-description in a defstruct form may specify one or more
slot-options. A slot-option consists of a pair of a keyword and
a value (which is not a form to be evaluated, but the value itself).
For example:
(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))
This specifies that each slot will always contain a
short-format floating-point number,
and that the last slot may not be altered once a ship is constructed.
The available slot-options are as follows.
- :type
-
The option :type type specifies that the contents of the
slot will always be of the specified data type. This is entirely
analogous to the declaration of a variable or function; indeed, it
effectively declares the result type of the access function. An
implementation may or may not choose to check the type of the new object
when initializing or assigning to a slot.
Note that the argument form type is not evaluated;
it must be a valid type specifier.
- :read-only
-
The option :read-only x, where x is not nil,
specifies that this slot may not be
altered; it will always contain the value specified at construction time.
setf will not accept the access function for this slot.
If x is nil, this slot-option has no effect.
Note that the argument form x is not evaluated.
Note that it is impossible to specify a slot-option unless
a default value is specified first.
Next: Defstruct Options
Up: Structures
Previous: Using the Automatically
AI.Repository@cs.cmu.edu