[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
3.4.1 Instance Slots
Any slot, regardless of its allocation, can be queried, referenced and set using the following four primitive procedures.
- primitive procedure: slot-exists? obj slot-name
Return
#t
if obj has a slot with name slot-name, otherwise#f
.
- primitive procedure: slot-bound? obj slot-name
Return
#t
if the slot named slot-name in obj has a value, otherwise#f
.slot-bound?
calls the generic functionslot-missing
if obj does not have a slot called slot-name (see section slot-missing).
- primitive procedure: slot-ref obj slot-name
Return the value of the slot named slot-name in obj.
slot-ref
calls the generic functionslot-missing
if obj does not have a slot called slot-name (see section slot-missing).slot-ref
calls the generic functionslot-unbound
if the named slot in obj does not have a value (see section slot-unbound).
- primitive procedure: slot-set! obj slot-name value
Set the value of the slot named slot-name in obj to value.
slot-set!
calls the generic functionslot-missing
if obj does not have a slot called slot-name (see section slot-missing).
GOOPS stores information about slots in class metaobjects. Internally,
all of these procedures work by looking up the slot definition for the
slot named slot-name in the class metaobject for (class-of
obj)
, and then using the slot definition's “getter” and
“setter” closures to get and set the slot value.
The next four procedures differ from the previous ones in that they take
the class metaobject as an explicit argument, rather than assuming
(class-of obj)
. Therefore they allow you to apply the
“getter” and “setter” closures of a slot definition in one class to
an instance of a different class.
[ *fixme* I have no idea why this is useful! Perhaps when a slot in
(class-of obj)
shadows a slot with the same name in one of
its superclasses? There should be an enlightening example here. ]
- primitive procedure: slot-exists-using-class? class obj slot-name
Return
#t
if the class metaobject class has a slot definition for a slot with name slot-name, otherwise#f
.
- primitive procedure: slot-bound-using-class? class obj slot-name
Return
#t
if applyingslot-ref-using-class
to the same arguments would call the generic functionslot-unbound
, otherwise#f
.slot-bound-using-class?
calls the generic functionslot-missing
if class does not have a slot definition for a slot called slot-name (see section slot-missing).
- primitive procedure: slot-ref-using-class class obj slot-name
Apply the “getter” closure for the slot named slot-name in class to obj, and return its result.
slot-ref-using-class
calls the generic functionslot-missing
if class does not have a slot definition for a slot called slot-name (see section slot-missing).slot-ref-using-class
calls the generic functionslot-unbound
if the application of the “getter” closure to obj returns an unbound value (see section slot-unbound).
- primitive procedure: slot-set-using-class! class obj slot-name value
Apply the “setter” closure for the slot named slot-name in class to obj and value.
slot-set-using-class!
calls the generic functionslot-missing
if class does not have a slot definition for a slot called slot-name (see section slot-missing).
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |