Previous: Slot Access Constructors, Up: Slots
Finally, there is another set of three procedures, which access the contents of a slot directly, given an instance and a slot name. These procedures are very slow by comparison with the above.
However, note the following. You can use these procedures in the body
of a define-method
special form in an efficient way. If the
define-method
specifies the correct number of arguments, the body
of the form contains a call to one of these procedures and nothing else,
and the specified slot name is quoted, the form is rewritten during
macro-expansion time as a call to the corresponding method-generating
procedure. For example, the following are equivalent:
(define-method p ((v <foo>)) (slot-value v 'bar)) (add-method p (slot-accessor-method <foo> 'bar))
Returns the contents of the slot name in instance; if the slot is uninitialized, an error of type
condition-type:uninitialized-slot
is signalled.