Common Lisp the Language, 2nd Edition
Next: Accessing Slots
Up: Classes
Previous: Creating Instances
of
An object that has standard-class
as its metaclass has zero
or more named slots. The slots of an object are determined by the class
of the object. Each slot can hold one value. The name of a slot is a
symbol that is syntactically valid for use as a variable name.
When a slot does not have a value, the slot is said to be
unbound. When an unbound slot is read, the generic function
slot-unbound
is invoked. The system-supplied primary method
for slot-unbound
signals an error.
The default initial value form for a slot is defined by the
:initform
slot option. When the :initform
form
is used to supply a value, it is evaluated in the lexical environment in
which the defclass
form was evaluated. The
:initform
along with the lexical environment in which the
defclass
form was evaluated is called a captured
:initform
. See section 28.1.9.
A local slot is defined to be a slot that is visible to exactly one instance, namely the one in which the slot is allocated. A shared slot is defined to be a slot that is visible to more than one instance of a given class and its subclasses.
A class is said to define a slot with a given name when the
defclass
form for that class contains a slot specifier with
that name. Defining a local slot does not immediately create a slot; it
causes a slot to be created each time an instance of the class is
created. Defining a shared slot immediately creates a slot.
The :allocation
slot option to defclass
controls the kind of slot that is defined. If the value of the
:allocation
slot option is :instance
, a local
slot is created. If the value of :allocation
is
:class
, a shared slot is created.
A slot is said to be accessible in an instance of a class if
the slot is defined by the class of the instance or is inherited from a
superclass of that class. At most one slot of a given name can be
accessible in an instance. A shared slot defined by a class is
accessible in all instances of that class. A detailed explanation of the
inheritance of slots is given in section 28.1.3.2.
Next: Accessing Slots
Up: Classes
Previous: Creating Instances
of
AI.Repository@cs.cmu.edu