Common Lisp the Language, 2nd Edition


next up previous contents index
Next: Defstruct Options Up: Structures Previous: Using the Automatically

19.4. Defstruct Slot-Options

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 up previous contents index
Next: Defstruct Options Up: Structures Previous: Using the Automatically


[email protected]