1
0
Fork 0
cl-sites/HyperSpec-7-0/HyperSpec/Body/07_ab.htm

39 lines
8.6 KiB
HTML
Raw Normal View History

2024-04-01 10:24:07 +02:00
<!-- Common Lisp HyperSpec (TM), version 7.0 generated by Kent M. Pitman on Mon, 11-Apr-2005 2:31am EDT -->
<HTML>
<HEAD>
<TITLE>CLHS: Section 7.1.2</TITLE>
<LINK HREF="../Data/clhs.css" REL="stylesheet" TYPE="text/css" />
<META HTTP-EQUIV="Author" CONTENT="Kent M. Pitman">
<META HTTP-EQUIV="Organization" CONTENT="LispWorks Ltd.">
<LINK REL=TOP HREF="../Front/index.htm">
<LINK REL=COPYRIGHT HREF="../Front/Help.htm#Legal">
<LINK REL=DISCLAIMER HREF="../Front/Help.htm#Disclaimer">
<LINK REL=PREV HREF="07_aa.htm">
<LINK REL=UP HREF="07_a.htm">
<LINK REL=NEXT HREF="07_ac.htm">
</HEAD>
<BODY>
<H1><A REV=MADE HREF="http://www.lispworks.com/"><IMG WIDTH=80 HEIGHT=65 ALT="[LISPWORKS]" SRC="../Graphics/LWSmall.gif" ALIGN=Bottom></A><A REL=TOP HREF="../Front/index.htm"><IMG WIDTH=237 HEIGHT=65 ALT="[Common Lisp HyperSpec (TM)]" SRC="../Graphics/CLHS_Sm.gif" ALIGN=Bottom></A> <A REL=PREV HREF="07_aa.htm"><IMG WIDTH=40 HEIGHT=40 ALT="[Previous]" SRC="../Graphics/Prev.gif" ALIGN=Bottom></A><A REL=UP HREF="07_a.htm"><IMG WIDTH=40 HEIGHT=40 ALT="[Up]" SRC="../Graphics/Up.gif" ALIGN=Bottom></A><A REL=NEXT HREF="07_ac.htm"><IMG WIDTH=40 HEIGHT=40 ALT="[Next]" SRC="../Graphics/Next.gif" ALIGN=Bottom></A></H1>
<HR>
<H2>
7.1.2 Declaring the Validity of Initialization Arguments</H2> <P>
Initialization arguments are checked for validity in each of the four situations that use them. An initialization argument may be valid in one situation and not another. For example, the system-supplied primary <A REL=DEFINITION HREF="26_glo_m.htm#method"><I>method</I></A> for <A REL=DEFINITION HREF="f_mk_ins.htm#make-instance"><B>make-instance</B></A> defined for the <A REL=DEFINITION HREF="26_glo_c.htm#class"><I>class</I></A> <A REL=DEFINITION HREF="t_std_cl.htm#standard-class"><B>standard-class</B></A> checks the validity of its initialization arguments and signals an error if an initialization argument is supplied that is not declared as valid in that situation. <P>
There are two means for declaring initialization arguments valid. <P>
<P><DL><P>
<DT>* Initialization arguments that fill <A REL=DEFINITION HREF="26_glo_s.htm#slot"><I>slots</I></A> are declared as valid by the <TT>:initarg</TT> slot option to <A REL=DEFINITION HREF="m_defcla.htm#defclass"><B>defclass</B></A>. The <TT>:initarg</TT> slot option is inherited from <A REL=DEFINITION HREF="26_glo_s.htm#superclass"><I>superclasses</I></A>. Thus the set of valid initialization arguments that fill <A REL=DEFINITION HREF="26_glo_s.htm#slot"><I>slots</I></A> for a <A REL=DEFINITION HREF="26_glo_c.htm#class"><I>class</I></A> is the union of the initialization arguments that fill <A REL=DEFINITION HREF="26_glo_s.htm#slot"><I>slots</I></A> declared as valid by that <A REL=DEFINITION HREF="26_glo_c.htm#class"><I>class</I></A> and its <A REL=DEFINITION HREF="26_glo_s.htm#superclass"><I>superclasses</I></A>. Initialization arguments that fill <A REL=DEFINITION HREF="26_glo_s.htm#slot"><I>slots</I></A> are valid in all four contexts. <P><DD>
<DT>* Initialization arguments that supply arguments to <A REL=DEFINITION HREF="26_glo_m.htm#method"><I>methods</I></A> are declared as valid by defining those <A REL=DEFINITION HREF="26_glo_m.htm#method"><I>methods</I></A>. The keyword name of each keyword parameter specified in the <A REL=DEFINITION HREF="26_glo_m.htm#method"><I>method</I></A>'s <A REL=DEFINITION HREF="26_glo_l.htm#lambda_list"><I>lambda list</I></A> becomes an initialization argument for all <A REL=DEFINITION HREF="26_glo_c.htm#class"><I>classes</I></A> for which the <A REL=DEFINITION HREF="26_glo_m.htm#method"><I>method</I></A> is applicable. The presence of <TT>&amp;allow-other-keys</TT> in the <A REL=DEFINITION HREF="26_glo_l.htm#lambda_list"><I>lambda list</I></A> of an applicable method disables validity checking of initialization arguments. Thus <A REL=DEFINITION HREF="26_glo_m.htm#method"><I>method</I></A> inheritance controls the set of valid initialization arguments that supply arguments to <A REL=DEFINITION HREF="26_glo_m.htm#method"><I>methods</I></A>. The <A REL=DEFINITION HREF="26_glo_g.htm#generic_function"><I>generic functions</I></A> for which <A REL=DEFINITION HREF="26_glo_m.htm#method"><I>method</I></A> definitions serve to declare initialization arguments valid are as follows: <P><DD><DL><DT>-- Making an <A REL=DEFINITION HREF="26_glo_i.htm#instance"><I>instance</I></A> of a <A REL=DEFINITION HREF="26_glo_c.htm#class"><I>class</I></A>: <A REL=DEFINITION HREF="f_alloca.htm#allocate-instance"><B>allocate-instance</B></A>, <A REL=DEFINITION HREF="f_init_i.htm#initialize-instance"><B>initialize-instance</B></A>, and <A REL=DEFINITION HREF="f_shared.htm#shared-initialize"><B>shared-initialize</B></A>. Initialization arguments declared as valid by these <A REL=DEFINITION HREF="26_glo_m.htm#method"><I>methods</I></A> are valid when making an <A REL=DEFINITION HREF="26_glo_i.htm#instance"><I>instance</I></A> of a <A REL=DEFINITION HREF="26_glo_c.htm#class"><I>class</I></A>. <P><DD>
<DT>-- Re-initializing an <A REL=DEFINITION HREF="26_glo_i.htm#instance"><I>instance</I></A>: <A REL=DEFINITION HREF="f_reinit.htm#reinitialize-instance"><B>reinitialize-instance</B></A> and <A REL=DEFINITION HREF="f_shared.htm#shared-initialize"><B>shared-initialize</B></A>. Initialization arguments declared as valid by these <A REL=DEFINITION HREF="26_glo_m.htm#method"><I>methods</I></A> are valid when re-initializing an <A REL=DEFINITION HREF="26_glo_i.htm#instance"><I>instance</I></A>. <P><DD>
<DT>-- Updating an <A REL=DEFINITION HREF="26_glo_i.htm#instance"><I>instance</I></A> to conform to a redefined <A REL=DEFINITION HREF="26_glo_c.htm#class"><I>class</I></A>: <A REL=DEFINITION HREF="f_upda_1.htm#update-instance-for-redefined-class"><B>update-instance-for-redefined-class</B></A> and <A REL=DEFINITION HREF="f_shared.htm#shared-initialize"><B>shared-initialize</B></A>. Initialization arguments declared as valid by these <A REL=DEFINITION HREF="26_glo_m.htm#method"><I>methods</I></A> are valid when updating an <A REL=DEFINITION HREF="26_glo_i.htm#instance"><I>instance</I></A> to conform to a redefined <A REL=DEFINITION HREF="26_glo_c.htm#class"><I>class</I></A>. <P><DD>
<DT>-- Updating an <A REL=DEFINITION HREF="26_glo_i.htm#instance"><I>instance</I></A> to conform to the definition of a different <A REL=DEFINITION HREF="26_glo_c.htm#class"><I>class</I></A>: <A REL=DEFINITION HREF="f_update.htm#update-instance-for-different-class"><B>update-instance-for-different-class</B></A> and <A REL=DEFINITION HREF="f_shared.htm#shared-initialize"><B>shared-initialize</B></A>. Initialization arguments declared as valid by these <A REL=DEFINITION HREF="26_glo_m.htm#method"><I>methods</I></A> are valid when updating an <A REL=DEFINITION HREF="26_glo_i.htm#instance"><I>instance</I></A> to conform to the definition of a different <A REL=DEFINITION HREF="26_glo_c.htm#class"><I>class</I></A>. <P><DD>
<P></DL><P></DL><P>
The set of valid initialization arguments for a <A REL=DEFINITION HREF="26_glo_c.htm#class"><I>class</I></A> is the set of valid initialization arguments that either fill <A REL=DEFINITION HREF="26_glo_s.htm#slot"><I>slots</I></A> or supply arguments to <A REL=DEFINITION HREF="26_glo_m.htm#method"><I>methods</I></A>, along with the predefined initialization argument <TT>:allow-other-keys</TT>. The default value for <TT>:allow-other-keys</TT> is <A REL=DEFINITION HREF="a_nil.htm#nil"><B>nil</B></A>. Validity checking of initialization arguments is disabled if the value of the initialization argument <TT>:allow-other-keys</TT> is <A REL=DEFINITION HREF="26_glo_t.htm#true"><I>true</I></A>. <P>
<P><HR>The following <A REL=META HREF="../Front/X3J13Iss.htm">X3J13 cleanup issue</A>, <I>not part of the specification</I>, applies to this section:<P><UL><LI> <A REL=CHILD HREF="../Issues/iss197.htm">INITIALIZATION-FUNCTION-KEYWORD-CHECKING</A><P></UL><HR>
<A REL=NAVIGATOR HREF="../Front/StartPts.htm"><IMG WIDTH=80 HEIGHT=40 ALT="[Starting Points]" SRC="../Graphics/StartPts.gif" ALIGN=Bottom></A><A REL=TOC HREF="../Front/Contents.htm"><IMG WIDTH=80 HEIGHT=40 ALT="[Contents]" SRC="../Graphics/Contents.gif" ALIGN=Bottom></A><A REL=INDEX HREF="../Front/X_Master.htm"><IMG WIDTH=80 HEIGHT=40 ALT="[Index]" SRC="../Graphics/Index.gif" ALIGN=Bottom></A><A REL=INDEX HREF="../Front/X_Symbol.htm"><IMG WIDTH=80 HEIGHT=40 ALT="[Symbols]" SRC="../Graphics/Symbols.gif" ALIGN=Bottom></A><A REL=GLOSSARY HREF="../Body/26_a.htm"><IMG WIDTH=80 HEIGHT=40 ALT="[Glossary]" SRC="../Graphics/Glossary.gif" ALIGN=Bottom></A><A HREF="../Front/X3J13Iss.htm"><IMG WIDTH=80 HEIGHT=40 ALT="[Issues]" SRC="../Graphics/Issues.gif" ALIGN=Bottom></A><BR>
<A REL=COPYRIGHT HREF="../Front/Help.htm#Legal"><I>Copyright 1996-2005, LispWorks Ltd. All rights reserved.</I></A><P>
</BODY>
</HTML>