⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ch08_42.htm

📁 by Randal L. Schwartz and Tom Phoenix ISBN 0-596-00132-0 Third Edition, published July 2001. (See
💻 HTM
字号:
<html><head><title>Class::ISA (Perl in a Nutshell, 2nd Edition)</title><link rel="stylesheet" type="text/css" href="../style/style1.css" /><meta name="DC.Creator" content="Stephen Spainhour" /><meta name="DC.Format" content="text/xml" scheme="MIME" /><meta name="DC.Language" content="en-US" /><meta name="DC.Publisher" content="O'Reilly &amp; Associates, Inc." /><meta name="DC.Source" scheme="ISBN" content="0596002416L" /><meta name="DC.Subject.Keyword" content="stuff" /><meta name="DC.Title" content="Perl in a Nutshell, 2nd Edition" /><meta name="DC.Type" content="Text.Monograph" /></head><body bgcolor="#ffffff"><img src="gifs/smbanner.gif" usemap="#banner-map" border="0" alt="Book Home" /><map name="banner-map"><area shape="rect" coords="1,-2,616,66" href="index.htm" alt="Java and XSLT" /><area shape="rect" coords="629,-11,726,25" href="jobjects/fsearch.htm" alt="Search this book" /></map><div class="navbar"><table width="684" border="0"><tr><td align="left" valign="top" width="228"><a href="ch08_41.htm"><img src="../gifs/txtpreva.gif" alt="Previous" border="0" /></a></td><td align="center" valign="top" width="228" /><td align="right" valign="top" width="228"><a href="ch08_43.htm"><img src="../gifs/txtnexta.gif" alt="Next" border="0" /></a></td></tr></table></div><h2 class="sect1">8.42. Class::ISA</h2><p><a name="INDEX-1322" />Allows you to scan<tt class="literal">@ISA</tt>&#x2014;in order and withoutduplicates&#x2014;for names of classes that Perl would scan to find amethod. This is important when using classes that are derived fromother classes, which are themselves derived from other classes, andso forth. Class::ISA is bundled with the Perl 5.8 source kit.</p><p>Let's say that you called<tt class="literal">SomeClass-&gt;method()</tt>. Perl searches for<tt class="literal">method()</tt> first in SomeClass, but will search itssuperclasses for <tt class="literal">method()</tt> if itdoesn't find it in SomeClass. For example:</p><blockquote><pre class="code">@SomeClass::ISA = qw(SomeOther SomeOtherOther SomeOtherOtherOther); use Class::ISA;print "SomeClass::ISA path is:\n ",join(", ", Class::ISA::super_path(`SomeClass')), "\n";</pre></blockquote><p>This prints:</p><blockquote><pre class="code">SomeOther, SomeOtherOther, SomeOtherOtherOther</pre></blockquote><p>Class::ISA doesn't export anything. If classeserroneously inherit from each other; i.e., ifthere's a loop (or cycle) betweenwhat's inherited between classes, Perl throws anerror, and Class::ISA itself will ignore the loop. If Perlcan't find the method in the <tt class="literal">@ISA</tt>tree, it looks in UNIVERSAL, but Class::ISA does not. You may dosomething like the following to search in UNIVERSAL as well:</p><blockquote><pre class="code">@supers = (Class::Tree::super_path($CLASS), `UNIVERSAL');</pre></blockquote><p>Here are the Class::ISA methods.</p><a name="INDEX-1323" /><div class="refentry"><table width="515" border="0" cellpadding="5"><tr><td align="left"><font size="+1"><b>self_and_super_path</b></font></td><td align="right"><i></i></td></tr></table><hr width="515" size="3" noshade="true" align="left" color="black" /><pre>Class::ISA::self_and_super_path($CLASS)</pre><p>Identical to <tt class="literal">super_path</tt>, except that<tt class="literal">$CLASS</tt> is included as the first element.</p></div><a name="INDEX-1324" /><div class="refentry"><table width="515" border="0" cellpadding="5"><tr><td align="left"><font size="+1"><b>self_and_super_versions</b></font></td><td align="right"><i></i></td></tr></table><hr width="515" size="3" noshade="true" align="left" color="black" /><pre>Class::ISA::self_and_super_versions($CLASS)</pre><p>Returns a hash with keys that are <tt class="literal">$CLASS</tt> (and itssuperclasses) and values that are the contents of the<tt class="literal">$VERSION</tt> of each class. If<tt class="literal">$VERSION</tt> does not exist,<tt class="literal">sel_and_super_versions</tt> returns<tt class="literal">undef</tt>.</p></div><a name="INDEX-1325" /><div class="refentry"><table width="515" border="0" cellpadding="5"><tr><td align="left"><font size="+1"><b>super_path</b></font></td><td align="right"><i></i></td></tr></table><hr width="515" size="3" noshade="true" align="left" color="black" /><pre>Class::ISA::super_path(<em class="replaceable">class</em>)</pre><p>Returns an ordered list of names of classes that Perl would searchthrough to find a method. Note that no duplicates will be allowed inthe list; nor will <em class="replaceable"><tt>class</tt></em> be included inthe list. UNIVERSAL is not included in the list, but if you need it,you should add it to the end of the list.</p></div><hr width="684" align="left" /><div class="navbar"><table width="684" border="0"><tr><td align="left" valign="top" width="228"><a href="ch08_41.htm"><img src="../gifs/txtpreva.gif" alt="Previous" border="0" /></a></td><td align="center" valign="top" width="228"><a href="index.htm"><img src="../gifs/txthome.gif" alt="Home" border="0" /></a></td><td align="right" valign="top" width="228"><a href="ch08_43.htm"><img src="../gifs/txtnexta.gif" alt="Next" border="0" /></a></td></tr><tr><td align="left" valign="top" width="228">8.41. charnames</td><td align="center" valign="top" width="228"><a href="index/index.htm"><img src="../gifs/index.gif" alt="Book Index" border="0" /></a></td><td align="right" valign="top" width="228">8.43. Class::Struct</td></tr></table></div><hr width="684" align="left" /><img src="../gifs/navbar.gif" usemap="#library-map" border="0" alt="Library Navigation Links" /><p><p><font size="-1"><a href="copyrght.htm">Copyright &copy; 2002</a> O'Reilly &amp; Associates. All rights reserved.</font></p><map name="library-map"><area shape="rect" coords="1,0,85,94" href="../index.htm"><area shape="rect" coords="86,1,178,103" href="../lwp/index.htm"><area shape="rect" coords="180,0,265,103" href="../lperl/index.htm"><area shape="rect" coords="267,0,353,105" href="../perlnut/index.htm"><area shape="rect" coords="354,1,446,115" href="../prog/index.htm"><area shape="rect" coords="448,0,526,132" href="../tk/index.htm"><area shape="rect" coords="528,1,615,119" href="../cookbook/index.htm"><area shape="rect" coords="617,0,690,135" href="../pxml/index.htm"></map></body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -