亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? perl13.htm

?? Perl作為一門重要的工程語言
?? HTM
?? 第 1 頁 / 共 3 頁
字號:
            <blockquote>1&nbsp; #<br>
              2&nbsp; # The Coffee.pm file to illustrate inheritance.<br>
              3&nbsp; #<br>
              4&nbsp; package Coffee;<br>
              5&nbsp; require Exporter;<br>
              6&nbsp; require Bean;<br>
              7&nbsp; @ISA = qw(Exporter, Bean);<br>
              8&nbsp; @EXPORT = qw(setImports, declareMain, closeMain);<br>
              9&nbsp; #<br>
              10 # set item<br>
              11 #<br>
              12 sub setCoffeeType{<br>
              13 &nbsp; my ($class,$name) = @_;<br>
              14 &nbsp; $class->{'Coffee'} = $name;<br>
              15 &nbsp; print "Set coffee type to $name \n";<br>
              16 &nbsp; }<br>
              17 #<br>
              18 # constructor<br>
              19 #<br>
              20 sub new {<br>
              21 &nbsp; my $type = shift;<br>
              22 &nbsp; my $this = Bean->new(); ##### <- LOOK HERE!!! ####<br>
              23 &nbsp; $this->{'Coffee'} = 'Instant'; # unless told otherwise<br>
              24 &nbsp; bless $this, $type;<br>
              25 &nbsp; return $this;<br>
              26 &nbsp; }<br>
              27 1;</blockquote>
                &nbsp;&nbsp;&nbsp;&nbsp;第6行的require Bean;語句包含了Bean.pm文件和所有相關函數,方法setCoffeeType()用于設置局域變量$class->{'Coffee'}的值。在構造函數new()中,$this指向Bean.pm返回的匿名哈希表的指針,而不是在本地創建一個,下面兩個語句分別為創建不同的哈希表從而與Bean.pm構造函數創建的哈希表無關的情況和繼承的情況:<br>
            &nbsp;&nbsp;&nbsp;&nbsp;my $this = {}; #非繼承<br>
            &nbsp;&nbsp;&nbsp;&nbsp;my $this = $theSuperClass->new(); #繼承<br>
            &nbsp;&nbsp;&nbsp;&nbsp;下面代碼演示如何調用繼承的方法:<br>
            <blockquote>1&nbsp; #!/usr/bin/perl<br>
              2&nbsp; push (@INC,'pwd');<br>
              3&nbsp; use Coffee;<br>
              4&nbsp; $cup = new Coffee;<br>
              5&nbsp; print "\n -------------------- Initial values ------------ 
              \n";<br>
              6&nbsp; print "Coffee: $cup->{'Coffee'} \n";<br>
              7&nbsp; print "Bean: $cup->{'Bean'} \n";<br>
              8&nbsp; print "\n -------------------- Change Bean Type ---------- 
              \n";<br>
              9&nbsp; $cup->setBeanType('Mixed');<br>
              10 print "Bean Type is now $cup->{'Bean'} \n";<br>
              11 print "\n ------------------ Change Coffee Type ---------- \n";<br>
              12 $cup->setCoffeeType('Instant');<br>
              13 print "Type of coffee: $cup->{'Coffee'} \n";</blockquote>
                &nbsp;&nbsp;&nbsp;&nbsp;該代碼的結果輸出如下:<br>
            <blockquote>-------------------- Initial values ------------<br>
              Coffee: Instant<br>
              Bean: Colombian<br>
              -------------------- Change Bean Type ----------<br>
              Set bean to Mixed<br>
              Bean Type is now Mixed<br>
              ------------------ Change Coffee Type ----------<br>
              Set coffee type to Instant<br>
              Type of coffee: Instant</blockquote>
                &nbsp;&nbsp;&nbsp;&nbsp;上述代碼中,先輸出對象創建時哈希表中索引為'Bean'和'Coffee'的值,然后調用各成員函數改變值后再輸出。<br>
            &nbsp;&nbsp;&nbsp;&nbsp;方法可以有多個參數,現在向Coffee.pm模塊增加函數makeCup(),代碼如下:<br>
            <blockquote>sub makeCup {<br>
              &nbsp; my ($class, $cream, $sugar, $dope) = @_;<br>
              &nbsp; print "\n================================== \n";<br>
              &nbsp; print "Making a cup \n";<br>
              &nbsp; print "Add cream \n" if ($cream);<br>
              &nbsp; print "Add $sugar sugar cubes\n" if ($sugar);<br>
              &nbsp; print "Making some really addictive coffee ;-) \n" if ($dope);<br>
              &nbsp; print "================================== \n";<br>
              }</blockquote>
                &nbsp;&nbsp;&nbsp;&nbsp;此函數可有三個參數,不同數目、值的參數產生不同的結果,例如:<br>
            <blockquote>1&nbsp; #!/usr/bin/perl<br>
              2&nbsp; push (@INC,'pwd');<br>
              3&nbsp; use Coffee;<br>
              4&nbsp; $cup = new Coffee;<br>
              5&nbsp; #<br>
              6&nbsp; # With no parameters<br>
              7&nbsp; #<br>
              8&nbsp; print "\n Calling with no parameters: \n";<br>
              9&nbsp; $cup->makeCup;<br>
              10 #<br>
              11 # With one parameter<br>
              12 #<br>
              13 print "\n Calling with one parameter: \n";<br>
              14 $cup->makeCup('1');<br>
              15 #<br>
              16 # With two parameters<br>
              17 #<br>
              18 print "\n Calling with two parameters: \n";<br>
              19 $cup->makeCup(1,'2');<br>
              20 #<br>
              21 # With all three parameters<br>
              22 #<br>
              23 print "\n Calling with three parameters: \n";<br>
              24 $cup->makeCup('1',3,'1');</blockquote>
                &nbsp;&nbsp;&nbsp;&nbsp;其結果輸出如下:<br>
            <blockquote>Calling with no parameters:<br>
              ==================================<br>
              Making a cup<br>
              ==================================<br>
              Calling with one parameter:<br>
              ==================================<br>
              Making a cup<br>
              Add cream<br>
              ==================================<br>
              Calling with two parameters:<br>
              ==================================<br>
              Making a cup<br>
              Add cream<br>
              Add 2 sugar cubes<br>
              ==================================<br>
              Calling with three parameters:<br>
              ==================================<br>
              Making a cup<br>
              Add cream<br>
              Add 3 sugar cubes<br>
              Making some really addictive coffee ;-)<br>
              ==================================</blockquote>
                &nbsp;&nbsp;&nbsp;&nbsp;在此例中,函數makeCup()的參數既可為字符串也可為整數,處理結果相同,你也可以把這兩種類型的數據處理區分開。在對參數的處理中,可以設置缺省的值,也可以根據實際輸入參數值的個數給予不同處理。<br>
            <a name=11>十一、子類方法的重載</a><br>
            &nbsp;&nbsp;&nbsp;&nbsp;繼承的好處在于可以獲得基類輸出的方法的功能,而有時需要對基類的方法重載以獲得更具體或不同的功能。下面在Bean.pm類中加入方法printType(),代碼如下:<br>
            <blockquote>sub printType {<br>
              &nbsp; my $class = shift @_;<br>
              &nbsp; print "The type of Bean is $class->{'Bean'} \n";<br>
              }</blockquote>
                &nbsp;&nbsp;&nbsp;&nbsp;然后更新其@EXPORT數組來輸出:<br>
            &nbsp;&nbsp;&nbsp;&nbsp;@EXPORT = qw ( setBeanType , printType );<br>
            &nbsp;&nbsp;&nbsp;&nbsp;現在來調用函數printType(),有三種調用方法:<br>
            <blockquote>$cup->Coffee::printType();<br>
              $cup->printType();<br>
              $cup->Bean::printType();</blockquote>
                &nbsp;&nbsp;&nbsp;&nbsp;輸出分別如下:<br>
            <blockquote>The type of Bean is Mixed<br>
              The type of Bean is Mixed<br>
              The type of Bean is Mixed</blockquote>
                &nbsp;&nbsp;&nbsp;&nbsp;為什么都一樣呢?因為在子類中沒有定義函數printType(),所以實際均調用了基類中的方法。如果想使子類有其自己的printType()函數,必須在Coffee.pm類中加以定義:<br>
            <blockquote>#<br>
              # This routine prints the type of $class->{'Coffee'}<br>
              #<br>
              sub printType {<br>
              &nbsp; my $class = shift @_;<br>
              &nbsp; print "The type of Coffee is $class->{'Coffee'} \n";<br>
              }</blockquote>
                &nbsp;&nbsp;&nbsp;&nbsp;然后更新其@EXPORT數組:<br>
            &nbsp;&nbsp;&nbsp;&nbsp;@EXPORT = qw(setImports, declareMain, closeMain, 
            printType);<br>
            &nbsp;&nbsp;&nbsp;&nbsp;現在輸出結果變成了:<br>
            <blockquote>The type of Coffee is Instant<br>
              The type of Coffee is Instant<br>
              The type of Bean is Mixed</blockquote>
                &nbsp;&nbsp;&nbsp;&nbsp;現在只有當給定了Bean::時才調用基類的方法,否則直接調用子類的方法。<br>
            &nbsp;&nbsp;&nbsp;&nbsp;那么如果不知道基類名該如何調用基類方法呢?方法是使用偽類保留字SUPER::。在類方法內使用語法如:$this->SUPER::function(...argument 
            list...); ,它將從@ISA列表中尋找。剛才的語句用SUPER::替換Bean::可以寫為$cup->SUPER::printType(); 
            ,其結果輸出相同,為:<br>
            <blockquote>The type of Bean is Mixed</blockquote>
            十二、Perl類和對象的一些注釋<br>
            &nbsp;&nbsp;&nbsp;&nbsp;OOP的最大好處就是代碼重用。OOP用數據封裝來隱藏一些復雜的代碼,Perl的包和模塊通過my函數提供數據封裝功能,但是Perl并不保證子類一定不會直接訪問基類的變量,這確實減少了數據封裝的好處,雖然這種動作是可以做到的,但卻是個很壞的編程風格。<br>
            注意:
            <blockquote>1、一定要通過方法來訪問類變量。<br>
              2、一定不要從模塊外部直接訪問類變量。</blockquote>
                &nbsp;&nbsp;&nbsp;&nbsp;當編寫包時,應該保證方法所需的條件已具備或通過參數傳遞給它。在包內部,應保證對全局變量的訪問只用通過方法傳遞的引用來訪問。對于方法要使用的靜態或全局數據,應該在基類中用local()來定義,子類通過調用基類來獲取。有時,子類可能需要改變這種數據,這時,基類可能就不知道怎樣去尋找新的數據,因此,這時最好定義對該數據的引用,子類和基類都通過引用來改變該數據。<br>
            &nbsp;&nbsp;&nbsp;&nbsp;最后,你將看到如下方式來使用對象和類:<br>
            &nbsp;&nbsp;&nbsp;&nbsp;use coffee::Bean;<br>
            &nbsp;&nbsp;&nbsp;&nbsp;這句語句的含義是“在@INC數組所有目錄的Coffee子目錄來尋找Bean.pm”。如果把Bean.pm移到./Coffee目錄,上面的例子將用這一use語句來工作。這樣的好處是有條理地組織類的代碼。再如,下面的語句:<br>
            &nbsp;&nbsp;&nbsp;&nbsp;use Another::Sub::Menu;<br>
            &nbsp;&nbsp;&nbsp;&nbsp;意味著如下子目錄樹:<br>
            &nbsp;&nbsp;&nbsp;&nbsp;./Another/Sub/Menu.pm<br>
            <p align=center><a href=perl12.htm>上一章</a> <a href=perl14.htm>下一章</a> 
              <a href=index.htm>目錄</a></p>
            <p align=center>&nbsp; </p>
            <!-- #EndEditable --></td>
        </tr>
      </table>
    </td></tr></table></body><!-- #EndTemplate --></html>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品美女一区二区| 91丝袜美腿高跟国产极品老师 | 麻豆精品视频在线观看视频| 欧美卡1卡2卡| 久久精品国产精品亚洲红杏| 久久网站热最新地址| 国产福利精品一区二区| 中文字幕巨乱亚洲| 欧美日韩在线播放三区四区| 青青草国产成人av片免费| 欧美精品一区二| 成人国产在线观看| 午夜私人影院久久久久| 欧美zozo另类异族| www.日本不卡| 天天综合天天做天天综合| 欧美精品一区二区三区高清aⅴ| 国产制服丝袜一区| 亚洲视频小说图片| 欧美一区二区视频网站| 国产精品18久久久| 亚洲成人动漫在线观看| 精品美女在线观看| 色婷婷久久综合| 国内精品国产成人| 亚洲日本丝袜连裤袜办公室| 在线免费观看日本一区| 韩国在线一区二区| 亚洲永久精品大片| 久久久高清一区二区三区| 色8久久人人97超碰香蕉987| 男人的天堂亚洲一区| 国产精品久99| 精品精品国产高清一毛片一天堂| av在线免费不卡| 极品少妇一区二区| 亚洲自拍欧美精品| 国产精品美女久久久久高潮| 欧美一区二区大片| 色婷婷国产精品综合在线观看| 免费观看久久久4p| 亚洲午夜免费视频| 国产精品色噜噜| 欧美mv和日韩mv的网站| 91精彩视频在线| 国产成人精品影视| 美女视频黄免费的久久 | 欧美亚洲国产一卡| 成人小视频在线观看| 老司机精品视频一区二区三区| 亚洲精品国产品国语在线app| 久久久99久久| 26uuu国产日韩综合| 欧美日韩免费观看一区二区三区 | 国产精品资源在线观看| 日本网站在线观看一区二区三区| 中文字幕亚洲电影| 国产网站一区二区| 久久香蕉国产线看观看99| 91精品黄色片免费大全| 欧美无砖专区一中文字| 91小视频在线| 99精品国产热久久91蜜凸| 高清不卡在线观看| 国产精品一区二区免费不卡 | 色婷婷综合久久久中文一区二区| 国产精品911| 国产精品综合在线视频| 国内欧美视频一区二区| 国产综合色精品一区二区三区| 免费av成人在线| 日本欧美一区二区三区| 婷婷久久综合九色综合绿巨人 | 爽爽淫人综合网网站| 亚洲综合男人的天堂| 亚洲在线中文字幕| 亚洲午夜免费电影| 日日噜噜夜夜狠狠视频欧美人| 亚洲国产日韩一区二区| 五月开心婷婷久久| 日本一区中文字幕 | 国产成人av一区二区三区在线| 久久国产日韩欧美精品| 精久久久久久久久久久| 国产麻豆欧美日韩一区| 高清在线观看日韩| 99精品视频一区| 欧美性做爰猛烈叫床潮| 欧美精品久久99久久在免费线 | 精品国产区一区| 久久久久国产一区二区三区四区 | 欧美剧情电影在线观看完整版免费励志电影 | 成人app网站| 色综合天天综合网天天狠天天| 91豆麻精品91久久久久久| 欧美三级视频在线观看| 日韩女优毛片在线| 国产婷婷色一区二区三区四区| 中文字幕在线观看不卡视频| 一区二区三区不卡视频在线观看| 亚洲国产日韩a在线播放| 日韩电影在线一区二区三区| 久草中文综合在线| 成人免费电影视频| 欧美视频日韩视频在线观看| 欧美成人官网二区| 国产精品系列在线| 亚洲高清免费一级二级三级| 久久成人免费电影| 色婷婷综合久久久久中文| 91精品欧美久久久久久动漫 | 精品一区二区综合| 99久久精品国产导航| 欧美一卡二卡在线观看| 国产精品美女久久久久久2018| 亚洲18色成人| 国产激情视频一区二区三区欧美| 一本到一区二区三区| 日韩精品影音先锋| 夜夜嗨av一区二区三区中文字幕| 极品美女销魂一区二区三区免费| 99久久精品国产网站| 91精品欧美综合在线观看最新 | 欧美日韩一级二级三级| 国产色91在线| 日韩国产一二三区| 91在线精品一区二区| 精品成人佐山爱一区二区| 亚洲激情男女视频| 成人一区二区三区视频| 日韩三区在线观看| 亚洲综合色自拍一区| 成人黄色av电影| 久久色成人在线| 日本视频一区二区| 欧美视频在线观看一区二区| 国产精品五月天| 国内精品在线播放| 欧美人狂配大交3d怪物一区| 亚洲欧洲精品成人久久奇米网| 国内精品国产三级国产a久久| 欧美日本韩国一区二区三区视频| 中文字幕一区免费在线观看| 国产原创一区二区三区| 日韩欧美美女一区二区三区| 亚洲成人激情av| 91国偷自产一区二区三区观看| 国产网站一区二区三区| 国产一区在线看| 精品国产青草久久久久福利| 蜜臀av性久久久久蜜臀aⅴ| 欧美色倩网站大全免费| 亚洲另类一区二区| 99热精品一区二区| 国产精品久久久久久久浪潮网站| 国产一区久久久| 久久这里都是精品| 黄一区二区三区| 精品福利在线导航| 久久99蜜桃精品| 精品少妇一区二区三区| 蜜臀av亚洲一区中文字幕| 日韩欧美一级二级三级久久久| 蜜桃视频在线观看一区| 欧美大片免费久久精品三p| 青青青伊人色综合久久| 日韩午夜小视频| 精品一区二区三区视频| 久久久久久久电影| 懂色av一区二区三区免费看| 国产欧美一区二区精品婷婷| 国产乱码一区二区三区| 精品精品欲导航| 国产一区二区中文字幕| 中文字幕乱码日本亚洲一区二区 | 日本乱人伦一区| 亚洲综合久久av| 7878成人国产在线观看| 欧美aa在线视频| 国产女人18水真多18精品一级做| 成人中文字幕电影| 亚洲精品视频在线看| 欧美三级蜜桃2在线观看| 日韩国产在线观看| 久久久精品免费观看| 不卡影院免费观看| 亚洲国产精品久久久男人的天堂 | 九九精品视频在线看| 国产午夜亚洲精品羞羞网站| 99久久国产综合精品麻豆| 夜夜爽夜夜爽精品视频| 日韩精品资源二区在线| 丁香亚洲综合激情啪啪综合| 一区二区三区四区高清精品免费观看 | 同产精品九九九| 精品久久人人做人人爽| 成人美女视频在线看| 亚洲无人区一区| 欧美精品一区视频| 91免费看`日韩一区二区|