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

📄 classes, objects, and ties.mht

📁 Perl 编程技巧大全。适合初学者阅读。
💻 MHT
📖 第 1 页 / 共 5 页
字号:
color=3D#00ffff>{</FONT>  <FONT color=3D#ffa500>return</FONT> =
$struct-&gt;<FONT color=3D#00ffff>{</FONT><FONT =
color=3D#00cd00>'age'</FONT><FONT color=3D#00ffff>}</FONT>      <FONT =
color=3D#00ffff>}</FONT>
    <FONT color=3D#ffa500>elsif</FONT> <FONT =
color=3D#00ffff>(</FONT><FONT color=3D#cdad00>@_</FONT> =3D=3D <FONT =
color=3D#cdcd00>2</FONT><FONT color=3D#00ffff>)</FONT> <FONT =
color=3D#00ffff>{</FONT>
        carp <FONT color=3D#00cd00>"age `$age' isn't numeric"</FONT>   =
<FONT color=3D#ffa500>if</FONT> $age !~ /^\d+/<FONT =
color=3D#00ffff>;</FONT>
        carp <FONT color=3D#00cd00>"age `$age' is unreasonable"</FONT> =
<FONT color=3D#ffa500>if</FONT> $age &gt; <FONT =
color=3D#cdcd00>150</FONT><FONT color=3D#00ffff>;</FONT>
        $self-&gt;<FONT color=3D#00ffff>{</FONT><FONT =
color=3D#00cd00>'age'</FONT><FONT color=3D#00ffff>}</FONT> =3D $age<FONT =
color=3D#00ffff>;</FONT>
    <FONT color=3D#00ffff>}</FONT><FONT color=3D#43cd80> </FONT>
<FONT color=3D#00ffff>}</FONT><FONT color=3D#43cd80> </FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#ffa500>if</FONT> <FONT =
color=3D#00ffff>(</FONT>$^W<FONT color=3D#00ffff>)</FONT> <FONT =
color=3D#00ffff>{</FONT><FONT color=3D#43cd80> </FONT>
    carp <FONT color=3D#00cd00>"age `$age' isn't numeric"</FONT>   <FONT =
color=3D#ffa500>if</FONT> $age !~ /^\d+/<FONT color=3D#00ffff>;</FONT>
    carp <FONT color=3D#00cd00>"age `$age' is unreasonable"</FONT> <FONT =
color=3D#ffa500>if</FONT> $age &gt; <FONT =
color=3D#cdcd00>150</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#00ffff>}</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#ffa500>my</FONT> <FONT =
color=3D#9ac0cd>$gripe</FONT> =3D $^W ? \&amp;carp : \&amp;croak<FONT =
color=3D#00ffff>;</FONT>
$gripe-&gt;<FONT color=3D#00ffff>(</FONT><FONT color=3D#00cd00>"age =
`$age' isn't numeric"</FONT><FONT color=3D#00ffff>)</FONT>   <FONT =
color=3D#ffa500>if</FONT> $age !~ /^\d+/<FONT color=3D#00ffff>;</FONT>
$gripe-&gt;<FONT color=3D#00ffff>(</FONT><FONT color=3D#00cd00>"age =
`$age' is unreasonable"</FONT><FONT color=3D#00ffff>)</FONT> <FONT =
color=3D#ffa500>if</FONT> $age &gt; <FONT =
color=3D#cdcd00>150</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT>struct <FONT color=3D#00cd00>Family</FONT> =3D&gt; <FONT =
color=3D#00ffff>[</FONT><FONT color=3D#00cd00>head</FONT> =3D&gt; <FONT =
color=3D#00cd00>'Person'</FONT>, <FONT color=3D#00cd00>address</FONT> =
=3D&gt; <FONT color=3D#00cd00>'$', members =3D&gt; '</FONT>@<FONT =
color=3D#00cd00>'];  #'</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT>struct <FONT color=3D#00cd00>Card</FONT> =3D&gt; <FONT =
color=3D#00ffff>{</FONT><FONT color=3D#43cd80> </FONT>
    <FONT color=3D#00cd00>name</FONT>    =3D&gt; <FONT =
color=3D#00cd00>'$',
    color   =3D&gt; '</FONT>$',
    <FONT color=3D#00cd00>cost</FONT>    =3D&gt; <FONT =
color=3D#00cd00>'$',
    type    =3D&gt; '</FONT>$',
    <FONT color=3D#00cd00>release</FONT> =3D&gt; <FONT =
color=3D#00cd00>'$',
    text    =3D&gt; '</FONT>$',
<FONT color=3D#00ffff>};</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT>struct <FONT color=3D#00cd00>Card</FONT> =3D&gt; <FONT =
color=3D#ff7f50>map</FONT> <FONT color=3D#00ffff>{</FONT> $_ =3D&gt; =
<FONT color=3D#00cd00>'$' } qw(name color cost type release text); =
#'</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT>struct <FONT color=3D#00cd00>hostent</FONT> =3D&gt; <FONT =
color=3D#00ffff>{</FONT> <FONT color=3D#98fb98>reverse</FONT> <FONT =
color=3D#ff7f50>qw</FONT><FONT color=3D#00ffff>{</FONT>
    $ name
    @ aliases
    $ addrtype
    $ <FONT color=3D#98fb98>length</FONT>
    @ addr_list
<FONT color=3D#00ffff>}};</FONT>
<FONT color=3D#bebebe>#-----------------------------
#define h_type h_addrtype
#define h_addr h_addr_list[0]
#-----------------------------
# make (hostent object)-&gt;
</FONT>type<FONT color=3D#00ffff>()</FONT>
 same as <FONT color=3D#00ffff>(</FONT>hostent object<FONT =
color=3D#00ffff>)</FONT>-&gt;
addrtype<FONT color=3D#00ffff>()</FONT>

*hostent::type =3D \&amp;hostent::addrtype<FONT color=3D#00ffff>;</FONT>

<FONT color=3D#bebebe># make (hostenv object)-&gt;
</FONT>addr<FONT color=3D#00ffff>()</FONT>
 same as <FONT color=3D#00ffff>(</FONT>hostenv object<FONT =
color=3D#00ffff>)</FONT>-&gt;addr_list<FONT =
color=3D#00ffff>(</FONT><FONT color=3D#cdcd00>0</FONT><FONT =
color=3D#00ffff>)</FONT>
<FONT color=3D#ffa500>sub</FONT> <FONT =
color=3D#b2dfee>hostent::addr</FONT> <FONT color=3D#00ffff>{</FONT> =
<FONT color=3D#ff7f50>shift</FONT>-&gt;addr_list<FONT =
color=3D#00ffff>(</FONT><FONT color=3D#cdcd00>0</FONT>,<FONT =
color=3D#cdad00>@_</FONT><FONT color=3D#00ffff>)</FONT> <FONT =
color=3D#00ffff>}</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#ffa500>package</FONT> <FONT =
color=3D#b2dfee>Extra::hostent</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#ffa500>use</FONT> <FONT =
color=3D#b2dfee>Net::hostent</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#cdad00>@ISA</FONT> =3D <FONT =
color=3D#ff7f50>qw</FONT><FONT color=3D#00ffff>(</FONT>hostent<FONT =
color=3D#00ffff>);</FONT>
<FONT color=3D#ffa500>sub</FONT> <FONT color=3D#b2dfee>addr</FONT> <FONT =
color=3D#00ffff>{</FONT> <FONT =
color=3D#ff7f50>shift</FONT>-&gt;addr_list<FONT =
color=3D#00ffff>(</FONT><FONT color=3D#cdcd00>0</FONT>,<FONT =
color=3D#cdad00>@_</FONT><FONT color=3D#00ffff>)</FONT> <FONT =
color=3D#00ffff>}</FONT><FONT color=3D#43cd80> </FONT>
<FONT color=3D#cdcd00>1</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT></PRE></FONT></TD></TR></TBODY></TABLE></DIV>
<DIV class=3DSECT2>
<H2 class=3DSECT2><A name=3DAEN722>Cloning Objects</A></H2>
<TABLE width=3D"100%" bgColor=3D#2f4f4f border=3D0>
  <TBODY>
  <TR>
    <TD><PRE class=3DSCREEN><FONT color=3D#f5deb3 size=3D+1><FONT =
color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#ffa500>my</FONT> <FONT =
color=3D#9ac0cd>$proto</FONT>  =3D <FONT =
color=3D#ff7f50>shift</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#ffa500>my</FONT> <FONT color=3D#9ac0cd>$class</FONT>  =3D =
<FONT color=3D#98fb98>ref</FONT><FONT =
color=3D#00ffff>(</FONT>$proto<FONT color=3D#00ffff>)</FONT> || =
$proto<FONT color=3D#00ffff>;</FONT>
<FONT color=3D#ffa500>my</FONT> <FONT color=3D#9ac0cd>$parent</FONT> =3D =
<FONT color=3D#98fb98>ref</FONT><FONT =
color=3D#00ffff>(</FONT>$proto<FONT color=3D#00ffff>)</FONT> &amp;&amp; =
$proto<FONT color=3D#00ffff>;</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT>$ob1 =3D SomeClass-&gt;
new<FONT color=3D#00ffff>()</FONT>
<FONT color=3D#00ffff>;</FONT>
<FONT color=3D#bebebe># later on
</FONT>$ob2 =3D <FONT color=3D#00ffff>(</FONT><FONT =
color=3D#98fb98>ref</FONT> $ob1<FONT color=3D#00ffff>)</FONT>-&gt;
new<FONT color=3D#00ffff>();</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT>$ob1 =3D Widget-&gt;new<FONT color=3D#00ffff>();</FONT>
$ob2 =3D $ob1-&gt;new<FONT color=3D#00ffff>();</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#ffa500>sub</FONT> <FONT color=3D#b2dfee>new</FONT> =
<FONT color=3D#00ffff>{</FONT>
    <FONT color=3D#ffa500>my</FONT> <FONT color=3D#9ac0cd>$proto</FONT>  =
=3D <FONT color=3D#ff7f50>shift</FONT><FONT color=3D#00ffff>;</FONT>
    <FONT color=3D#ffa500>my</FONT> <FONT color=3D#9ac0cd>$class</FONT>  =
=3D <FONT color=3D#98fb98>ref</FONT><FONT =
color=3D#00ffff>(</FONT>$proto<FONT color=3D#00ffff>)</FONT> || =
$proto<FONT color=3D#00ffff>;</FONT>
    <FONT color=3D#ffa500>my</FONT> <FONT color=3D#9ac0cd>$parent</FONT> =
=3D <FONT color=3D#98fb98>ref</FONT><FONT =
color=3D#00ffff>(</FONT>$proto<FONT color=3D#00ffff>)</FONT> &amp;&amp; =
$proto<FONT color=3D#00ffff>;</FONT>

    <FONT color=3D#ffa500>my</FONT> <FONT =
color=3D#9ac0cd>$self</FONT><FONT color=3D#00ffff>;</FONT>
    <FONT color=3D#bebebe># check whether we're shadowing a new from =
</FONT><FONT color=3D#cdad00>@ISA</FONT><FONT color=3D#bebebe>
</FONT>    <FONT color=3D#ffa500>if</FONT> <FONT =
color=3D#00ffff>(</FONT><FONT color=3D#cdad00>@ISA</FONT> &amp;&amp; =
$proto-&gt;SUPER::can<FONT color=3D#00ffff>(</FONT><FONT =
color=3D#00cd00>'new'</FONT><FONT color=3D#00ffff>)</FONT> <FONT =
color=3D#00ffff>)</FONT> <FONT color=3D#00ffff>{</FONT>
        $self =3D $proto-&gt;SUPER::new<FONT =
color=3D#00ffff>(</FONT><FONT color=3D#cdad00>@_</FONT><FONT =
color=3D#00ffff>);</FONT>
    <FONT color=3D#00ffff>}</FONT> <FONT color=3D#ffa500>else</FONT> =
<FONT color=3D#00ffff>{</FONT><FONT color=3D#43cd80> </FONT>
        $self =3D <FONT color=3D#00ffff>{};</FONT>
        <FONT color=3D#98fb98>bless</FONT> <FONT =
color=3D#00ffff>(</FONT>$self, $proto<FONT color=3D#00ffff>);</FONT>
    <FONT color=3D#00ffff>}</FONT>
    <FONT color=3D#98fb98>bless</FONT><FONT =
color=3D#00ffff>(</FONT>$self, $class<FONT color=3D#00ffff>);</FONT>

    $self-&gt;<FONT color=3D#00ffff>{</FONT><FONT =
color=3D#00cd00>PARENT</FONT><FONT color=3D#00ffff>}</FONT>  =3D =
$parent<FONT color=3D#00ffff>;</FONT>
    $self-&gt;<FONT color=3D#00ffff>{</FONT><FONT =
color=3D#00cd00>START</FONT><FONT color=3D#00ffff>}</FONT>   =3D <FONT =
color=3D#98fb98>time</FONT><FONT color=3D#00ffff>();</FONT>   <FONT =
color=3D#bebebe># init data fields
</FONT>    $self-&gt;<FONT color=3D#00ffff>{</FONT><FONT =
color=3D#00cd00>AGE</FONT><FONT color=3D#00ffff>}</FONT>     =3D <FONT =
color=3D#cdcd00>0</FONT><FONT color=3D#00ffff>;</FONT>
    <FONT color=3D#ffa500>return</FONT> $self<FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#00ffff>}</FONT><FONT color=3D#43cd80> </FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT></PRE></FONT></TD></TR></TBODY></TABLE></DIV>
<DIV class=3DSECT2>
<H2 class=3DSECT2><A name=3DAEN725>Calling Methods Indirectly</A></H2>
<TABLE width=3D"100%" bgColor=3D#2f4f4f border=3D0>
  <TBODY>
  <TR>
    <TD><PRE class=3DSCREEN><FONT color=3D#f5deb3 size=3D+1><FONT =
color=3D#bebebe>#-----------------------------
</FONT>$methname =3D <FONT color=3D#00cd00>"flicker"</FONT><FONT =
color=3D#00ffff>;</FONT>
$obj-&gt;$methname<FONT color=3D#00ffff>(</FONT><FONT =
color=3D#cdcd00>10</FONT><FONT color=3D#00ffff>);</FONT>         <FONT =
color=3D#bebebe># calls $obj-&gt;flicker(10);
</FONT>
<FONT color=3D#bebebe># call three methods on the object, by name
</FONT><FONT color=3D#ffa500>foreach</FONT> <FONT =
color=3D#9ac0cd>$m</FONT> <FONT color=3D#00ffff>(</FONT> <FONT =
color=3D#ff7f50>qw</FONT><FONT color=3D#00ffff>(</FONT>start run =
stop<FONT color=3D#00ffff>)</FONT> <FONT color=3D#00ffff>)</FONT> <FONT =
color=3D#00ffff>{</FONT>
    $obj-&gt;
$m<FONT color=3D#00ffff>();</FONT>

<FONT color=3D#00ffff>}</FONT><FONT color=3D#43cd80> </FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#cdad00>@methods</FONT> =3D <FONT =
color=3D#ff7f50>qw</FONT><FONT color=3D#00ffff>(</FONT>name rank =
serno<FONT color=3D#00ffff>);</FONT>
<FONT color=3D#cdcd00>%his_info</FONT> =3D <FONT =
color=3D#ff7f50>map</FONT> <FONT color=3D#00ffff>{</FONT> $_ =3D&gt; =
$ob-&gt;$_<FONT color=3D#00ffff>()</FONT> <FONT color=3D#00ffff>}</FONT> =
<FONT color=3D#cdad00>@methods</FONT><FONT color=3D#00ffff>;</FONT>

<FONT color=3D#bebebe># same as this:
</FONT>
<FONT color=3D#cdcd00>%his_info</FONT> =3D <FONT =
color=3D#00ffff>(</FONT>
    <FONT color=3D#00cd00>'name'</FONT>  =3D&gt; $ob-&gt;
name<FONT color=3D#00ffff>()</FONT>
,
    <FONT color=3D#00cd00>'rank'</FONT>  =3D&gt; $ob-&gt;
rank<FONT color=3D#00ffff>()</FONT>
,
    <FONT color=3D#00cd00>'serno'</FONT> =3D&gt; $ob-&gt;
serno<FONT color=3D#00ffff>()</FONT>
,
<FONT color=3D#00ffff>);</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#ffa500>my</FONT> <FONT =
color=3D#9ac0cd>$fnref</FONT> =3D <FONT color=3D#ffa500>sub</FONT> <FONT =
color=3D#00ffff>{</FONT> $ob-&gt;method<FONT =
color=3D#00ffff>(</FONT><FONT color=3D#cdad00>@_</FONT><FONT =
color=3D#00ffff>)</FONT> <FONT color=3D#00ffff>};</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT>$fnref-&gt;<FONT color=3D#00ffff>(</FONT><FONT =
color=3D#cdcd00>10</FONT>, <FONT color=3D#00cd00>"fred"</FONT><FONT =
color=3D#00ffff>);</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT>$obj-&gt;method<FONT color=3D#00ffff>(</FONT><FONT =
color=3D#cdcd00>10</FONT>, <FONT color=3D#00cd00>"fred"</FONT><FONT =

⌨️ 快捷键说明

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