Previous: Generic Functions, Up: Introspection [Contents][Index]
Any slot, regardless of its allocation, can be queried, referenced and set using the following four primitive procedures.
Return #t if obj has a slot with name slot-name,
otherwise #f.
Return #t if the slot named slot-name in obj has a
value, otherwise #f.
slot-bound? calls the generic function slot-missing if
obj does not have a slot called slot-name (see slot-missing).
Return the value of the slot named slot-name in obj.
slot-ref calls the generic function slot-missing if
obj does not have a slot called slot-name (see slot-missing).
slot-ref calls the generic function slot-unbound if the
named slot in obj does not have a value (see slot-unbound).
Set the value of the slot named slot-name in obj to value.
slot-set! calls the generic function slot-missing if
obj does not have a slot called slot-name (see slot-missing).
GOOPS stores information about slots in classes. Internally,
all of these procedures work by looking up the slot definition for the
slot named slot-name in the class (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 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.
Return #t if class has a slot definition for a slot with
name slot-name, otherwise #f.
Return #t if applying slot-ref-using-class to the same
arguments would call the generic function slot-unbound, otherwise
#f.
slot-bound-using-class? calls the generic function
slot-missing if class does not have a slot definition for a
slot called slot-name (see slot-missing).
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 function
slot-missing if class does not have a slot definition for a
slot called slot-name (see slot-missing).
slot-ref-using-class calls the generic function
slot-unbound if the application of the “getter” closure to
obj returns an unbound value (see slot-unbound).
Apply the “setter” closure for the slot named slot-name in class to obj and value.
slot-set-using-class! calls the generic function
slot-missing if class does not have a slot definition for a
slot called slot-name (see slot-missing).
Slots whose allocation is per-class rather than per-instance can be referenced and set without needing to specify any particular instance.
Return the value of the slot named slot-name in class class.
The named slot must have #:class or #:each-subclass
allocation (see allocation).
If there is no such slot with #:class or #:each-subclass
allocation, class-slot-ref calls the slot-missing generic
function with arguments class and slot-name. Otherwise, if
the slot value is unbound, class-slot-ref calls the
slot-unbound generic function, with the same arguments.
Set the value of the slot named slot-name in class class to
value. The named slot must have #:class or
#:each-subclass allocation (see allocation).
If there is no such slot with #:class or #:each-subclass
allocation, class-slot-ref calls the slot-missing generic
function with arguments class and slot-name.
When a slot-ref or slot-set! call specifies a non-existent
slot name, or tries to reference a slot whose value is unbound, GOOPS
calls one of the following generic functions.
When an application attempts to reference or set a class or instance
slot by name, and the slot name is invalid for the specified class
or object, GOOPS calls the slot-missing generic function.
The default methods all call goops-error with an appropriate
message.
When an application attempts to reference a class or instance slot, and
the slot’s value is unbound, GOOPS calls the slot-unbound generic
function.
The default methods all call goops-error with an appropriate
message.
Previous: Generic Functions, Up: Introspection [Contents][Index]