User Tools

A PCRE internal error occured. This might be caused by a faulty plugin

====== Standard Generic Function SLOT-MISSING ====== ====Syntax==== * **slot-missing** //class object slot-name operation ''&optional'' new-value// → //result''*''// ====Method Signatures==== * **slot-missing** (//class// **[[CL:Types:t]]**) //object slot-name operation ''&optional'' new-value// ====Arguments and Values==== * //class// - the //[[CL:Glossary:class]]// of //object//. * //object// - an //[[CL:Glossary:object]]//. * //slot-name// - a //[[CL:Glossary:symbol]]// (the //[[CL:Glossary:name]]// of a would-be //[[CL:Glossary:slot]]//). * //operation// - one of the //[[CL:Glossary:symbols]]// **[[CL:Functions:setf]]**, **[[CL:Functions:slot-boundp]]**, **[[CL:Functions:slot-makunbound]]**, or **[[CL:Functions:slot-value]]**. * //new-value// - an //[[CL:Glossary:object]]//. * //result// - an //[[CL:Glossary:object]]//. ====Description==== The generic function **slot-missing** is invoked when an attempt is made to //[[CL:Glossary:access]]// a //[[CL:Glossary:slot]]// in an //object// whose //[[CL:Glossary:metaclass]]// is **[[CL:Types:standard-class]]** and the //[[CL:Glossary:slot]]// of the name //slot-name// is not a //[[CL:Glossary:name]]// of a //[[CL:Glossary:slot]]// in that //[[CL:Glossary:class]]//. The default //[[CL:Glossary:method]]// signals an error. The generic function **slot-missing** is not intended to be called by programmers. Programmers may write //[[CL:Glossary:method|methods]]// for it. The generic function **slot-missing** may be called during evaluation of **[[CL:Functions:slot-value]]**, **([[CL:Macros:setf]] [[CL:Functions:slot-value]])**, **[[CL:Functions:slot-boundp]]**, and **[[CL:Functions:slot-makunbound]]**. For each of these operations the corresponding //[[CL:Glossary:symbol]]// for the //operation// argument is **[[CL:Functions:slot-value]]**, **[[CL:Macros:setf]]**, **[[CL:Functions:slot-boundp]]**, and **[[CL:Functions:slot-makunbound]]** respectively. The optional //new-value// argument to **slot-missing** is used when the operation is attempting to set the value of the //[[CL:Glossary:slot]]//. If **slot-missing** returns, its values will be treated as follows: * If the //operation// is **[[CL:Macros:setf]]** or **[[CL:Functions:slot-makunbound]]**, any //[[CL:Glossary:values]]// will be ignored by the caller. * If the //operation// is **[[CL:Functions:slot-value]]**, only the //[[CL:Glossary:primary value]]// will be used by the caller, and all other values will be ignored. * If the //operation// is **[[CL:Functions:slot-boundp]]**, any //[[CL:Glossary:boolean equivalent]]// of the //[[CL:Glossary:primary value]]// of the //[[CL:Glossary:method]]// might be is used, and all other values will be ignored. ====Examples==== None. ====Affected By==== None. ====Exceptional Situations==== The default //[[CL:Glossary:method]]// on **slot-missing** signals an error of type **[[CL:Types:error]]**. ====See Also==== * **[[CL:Macros:defclass|Macro DEFCLASS]]** * **[[CL:Functions:slot-exists-p|Function SLOT-EXISTS-P]]** * **[[CL:Functions:slot-value|Function SLOT-VALUE]]** ====Notes==== The set of arguments (including the //[[CL:Glossary:class]]// of the instance) facilitates defining methods on the metaclass for **slot-missing**. \issue{SLOT-MISSING-VALUES:SPECIFY}