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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? perl13.htm

?? Perl作為一門重要的工程語言
?? HTM
?? 第 1 頁 / 共 3 頁
字號:
            <ul>
              <li><a name="4.1">實例變量</a></li>
            </ul>
            <br>
            <br>
            &nbsp;&nbsp;&nbsp;&nbsp;作為構(gòu)造函數(shù)的new()函數(shù)的參數(shù)叫做實例變量。實例變量在創(chuàng)建對象的每個實例時用于初始化,例如可以用new()函數(shù)為對象的每個實例起個名字。<br>
            &nbsp;&nbsp;&nbsp;&nbsp;可以用匿名哈希表或匿名數(shù)組來保存實例變量。<br>
            &nbsp;&nbsp;&nbsp;&nbsp;用哈希表的代碼如下:<br>
            <blockquote>sub new {
              <blockquote>my $type = shift;<br>
                my %parm = @_;<br>
                my $this = {};<br>
                $this->{'Name'} = $parm{'Name'};<br>
                $this->{'x'} = $parm{'x'};<br>
                $this->{'y'} = $parm{'y'};<br>
                bless $this, $type;</blockquote>
              }</blockquote>
                &nbsp;&nbsp;&nbsp;&nbsp;用數(shù)組保存的代碼如下:<br>
            <blockquote>sub new {
              <blockquote>my $type = shift;<br>
                my %parm = @_;<br>
                my $this = [];<br>
                $this->[0] = $parm{'Name'};<br>
                $this->[1] = $parm{'x'};<br>
                $this->[2] = $parm{'y'};<br>
                bless $this, $type;</blockquote>
              }</blockquote>
                &nbsp;&nbsp;&nbsp;&nbsp;構(gòu)造對象時,可以如下傳遞參數(shù):<br>
            &nbsp;&nbsp;&nbsp;&nbsp;$mug = Cocoa::new( 'Name' => 'top','x' => 
            10,'y' => 20 );<br>
            &nbsp;&nbsp;&nbsp;&nbsp;操作符=>與逗號操作服功能相同,但=>可讀性好。訪問方法如下:<br>
            &nbsp;&nbsp;&nbsp;&nbsp;print "Name=$mug->{'Name'}\n";<br>
            &nbsp;&nbsp;&nbsp;&nbsp;print "x=$mug->{'x'}\n";<br>
            &nbsp;&nbsp;&nbsp;&nbsp;print "y=$mug->{'y'}\n";<br>
            <a name=5>五、方法</a><br>
            &nbsp;&nbsp;&nbsp;&nbsp;Perl類的方法只不過是一個Perl子程序而已,也即通常所說的成員函數(shù)。Perl的方法定義不提供任何特殊語法,但規(guī)定方法的第一個參數(shù)為對象或其被引用的包。Perl有兩種方法:靜態(tài)方法和虛方法。<br>
            &nbsp;&nbsp;&nbsp;&nbsp;靜態(tài)方法第一個參數(shù)為類名,虛方法第一個參數(shù)為對象的引用。方法處理第一個參數(shù)的方式?jīng)Q定了它是靜態(tài)的還是虛的。靜態(tài)方法一般忽略掉第一個參數(shù),因為它們已經(jīng)知道自己在哪個類了,構(gòu)造函數(shù)即靜態(tài)方法。虛方法通常首先把第一個參數(shù)shift到變量self或this中,然后將該值作普通的引用使用。如:<br>
            <blockquote>1. sub nameLister {<br>
              2. &nbsp; &nbsp; my $this = shift;<br>
              3. &nbsp; &nbsp; my ($keys ,$value );<br>
              4. &nbsp; &nbsp; while (($key, $value) = each (%$this)) {<br>
              5. &nbsp; &nbsp; &nbsp; &nbsp; print "\t$key is $value.\n";<br>
              6. &nbsp; &nbsp; }<br>
              7. }</blockquote>
            六、方法的輸出<br>
            &nbsp;&nbsp;&nbsp;&nbsp;如果你現(xiàn)在想引用Cocoa.pm包,將會得到編譯錯誤說未找到方法,這是因為Cocoa.pm的方法還沒有輸出。輸出方法需要Exporter模塊,在包的開始部分加上下列兩行:<br>
            &nbsp;&nbsp;&nbsp;&nbsp;require Exporter;<br>
            &nbsp;&nbsp;&nbsp;&nbsp;@ISA = qw (Exporter);<br>
            &nbsp;&nbsp;&nbsp;&nbsp;這兩行包含上Exporter.pm模塊,并把Exporter類名加入@ISA數(shù)組以供查找。接下來把你自己的類方法列在@EXPORT數(shù)組中就可以了。例如想輸出方法closeMain和declareMain,語句如下:<br>
            &nbsp;&nbsp;&nbsp;&nbsp;@EXPORT = qw (declareMain , closeMain);<br>
            &nbsp;&nbsp;&nbsp;&nbsp;Perl類的繼承是通過@ISA數(shù)組實現(xiàn)的。@ISA數(shù)組不需要在任何包中定義,然而,一旦它被定義,Perl就把它看作目錄名的特殊數(shù)組。它與@INC數(shù)組類似,@INC是包含文件的尋找路徑。@ISA數(shù)組含有類(包)名,當(dāng)一個方法在當(dāng)前包中未找到時就到@ISA中的包去尋找。@ISA中還含有當(dāng)前類繼承的基類名。<br>
            &nbsp;&nbsp;&nbsp;&nbsp;類中調(diào)用的所有方法必須屬于同一個類或@ISA數(shù)組定義的基類。如果一個方法在@ISA數(shù)組中未找到,Perl就到AUTOLOAD()子程序中尋找,這個可選的子程序在當(dāng)前包中用sub定義。若使用AUTOLOAD子程序,必須用use 
            Autoload;語句調(diào)用autoload.pm包。AUTOLOAD子程序嘗試從已安裝的Perl庫中裝載調(diào)用的方法。如果AUTOLOAD也失敗了,Perl再到UNIVERSAL類做最后一次嘗試,如果仍失敗,Perl就生成關(guān)于該無法解析函數(shù)的錯誤。<br>
            七、方法的調(diào)用<br>
            &nbsp;&nbsp;&nbsp;&nbsp;調(diào)用一個對象的方法有兩種方法,一是通過該對象的引用(虛方法),一是直接使用類名(靜態(tài)方法)。當(dāng)然該方法必須已被輸出。現(xiàn)在給Cocoa類增加一些方法,代碼如下:
            <blockquote>package Cocoa;<br>
              require Exporter;<br>
              @ISA = qw(Exporter);<br>
              @EXPORT = qw(setImports, declareMain, closeMain);<br>
              #<br>
              # This routine creates the references for imports in Java functions<br>
              #<br>
              sub setImports{<br>
              &nbsp; my $class = shift @_;<br>
              &nbsp; my @names = @_;<br>
              &nbsp; foreach (@names) {<br>
              &nbsp; &nbsp; print "import " . $_ . ";\n";<br>
              &nbsp; }<br>
              }<br>
              #<br>
              # This routine declares the main function in a Java script<br>
              #<br>
              sub declareMain{<br>
              &nbsp; my $class = shift @_;<br>
              &nbsp; my ( $name, $extends, $implements) = @_;<br>
              &nbsp; print "\n public class $name";<br>
              &nbsp; if ($extends) {<br>
              &nbsp; &nbsp; print " extends " . $extends;<br>
              &nbsp; }<br>
              &nbsp; if ($implements) {<br>
              &nbsp; &nbsp; print " implements " . $implements;<br>
              &nbsp; }<br>
              &nbsp; print " { \n";<br>
              }<br>
              #<br>
              # This routine declares the main function in a Java script<br>
              #<br>
              sub closeMain{<br>
              &nbsp; print "} \n";<br>
              }<br>
              #<br>
              # This subroutine creates the header for the file.<br>
              #<br>
              sub new {<br>
              &nbsp; my $this = {};<br>
              &nbsp; print "\n /* \n ** Created by Cocoa.pm \n ** Use at own risk 
              \n */ \n";<br>
              &nbsp; bless $this;<br>
              &nbsp; return $this;<br>
              }<br>
              <br>
              1;</blockquote>
                &nbsp;&nbsp;&nbsp;&nbsp;現(xiàn)在,我們寫一個簡單的Perl腳本來使用該類的方法,下面是創(chuàng)建一個Java applet源代碼骨架的腳本代碼:
            <blockquote>#!/usr/bin/perl<br>
              use Cocoa;<br>
              $cup = new Cocoa;<br>
              $cup->setImports( 'java.io.InputStream', 'java.net.*');<br>
              $cup->declareMain( "Msg" , "java.applet.Applet", "Runnable");<br>
              $cup->closeMain();<br>
            </blockquote>
                &nbsp;&nbsp;&nbsp;&nbsp;這段腳本創(chuàng)建了一個叫做Msg的Java applet,它擴展(extend)了java.applet.Applet小應(yīng)用程序并使之可運行(runnable),其中最后三行也可以寫成如下:
            <blockquote>Cocoa::setImports($cup, 'java.io.InputStream', 'java.net.*');<br>
              Cocoa::declareMain($cup, "Msg" , "java.applet.Applet", "Runnable");<br>
              Cocoa::closeMain($cup);</blockquote>
                &nbsp;&nbsp;&nbsp;&nbsp;其運行結(jié)果如下:
            <blockquote>/*<br>
              ** Created by Cocoa.pm<br>
              ** Use at own risk<br>
              */<br>
              import java.io.InputStream;<br>
              import java.net.*;<br>
              <br>
              public class Msg extends java.applet.Applet implements Runnable 
              {<br>
              }</blockquote>
                &nbsp;&nbsp;&nbsp;&nbsp;注意:如果用->操作符調(diào)用方法(也叫間接調(diào)用),參數(shù)必須用括號括起來,如:$cup->setImports( 
            'java.io.InputStream', 'java.net.*');而雙冒號調(diào)用如:Cocoa::setImports($cup, 
            'java.io.InputStream', 'java.net.*');也可去掉括號寫成:Cocoa::setImports $cup, 
            'java.io.InputStream', 'java.net.*' ;<br>
            <a name=8>八、重載</a><br>
            &nbsp;&nbsp;&nbsp;&nbsp;有時需要指定使用哪個類的方法,如兩個不同的類有同名方法的時候。假設(shè)類Espresso和Qava都定義了方法grind,可以用::操作符指定使用Qava的方法:<br>
            &nbsp;&nbsp;&nbsp;&nbsp;$mess = Qava::grind("whole","lotta","bags");<br>
            &nbsp;&nbsp;&nbsp;&nbsp;Qava::grind($mess, "whole","lotta","bags");<br>
            &nbsp;&nbsp;&nbsp;&nbsp;可以根據(jù)程序的運行情況來選擇使用哪個類的方法,這可以通過使用符號引用去調(diào)用來實現(xiàn):<br>
            &nbsp;&nbsp;&nbsp;&nbsp;$method = $local ? "Qava::" : "Espresso::";<br>
            &nbsp;&nbsp;&nbsp;&nbsp;$cup->{$method}grind(@args);<br>
            <a name=9>九、析構(gòu)函數(shù)</a><br>
            &nbsp;&nbsp;&nbsp;&nbsp;Perl跟蹤對象的鏈接數(shù)目,當(dāng)某對象的最后一個應(yīng)用釋放到內(nèi)存池時,該對象就自動銷毀。對象的析構(gòu)發(fā)生在代碼停止后,腳本將要結(jié)束時。對于全局變量而言,析構(gòu)發(fā)生在最后一行代碼運行之后。<br>
            &nbsp;&nbsp;&nbsp;&nbsp;如果你想在對象被釋放之前獲取控制權(quán),可以定義DESTROY()方法。DESTROY()在對象將釋放前被調(diào)用,使你可以做一些清理工作。DESTROY()函數(shù)不自動調(diào)用其它DESTROY()函數(shù),Perl不做內(nèi)置的析構(gòu)工作。如果構(gòu)造函數(shù)從基類多次bless,DESTROY()可能需要調(diào)用其它類的DESTROY()函數(shù)。當(dāng)一個對象被釋放時,其內(nèi)含的所有對象引用自動釋放、銷毀。<br>
            &nbsp;&nbsp;&nbsp;&nbsp;一般來說,不需要定義DESTROY()函數(shù),如果需要,其形式如下:<br>
            <blockquote>sub DESTROY {<br>
              #<br>
              # Add code here.<br>
              #<br>
              }</blockquote>
                &nbsp;&nbsp;&nbsp;&nbsp;因為多種目的,Perl使用了簡單的、基于引用的垃圾回收系統(tǒng)。任何對象的引用數(shù)目必須大于零,否則該對象的內(nèi)存就被釋放。當(dāng)程序退出時,Perl的一個徹底的查找并銷毀函數(shù)進(jìn)行垃圾回收,進(jìn)程中的一切被簡單地刪除。在UNIX類的系統(tǒng)中,這像是多余的,但在內(nèi)嵌式系統(tǒng)或多線程環(huán)境中這確實很必要。<br>
            <a name=10>十、繼承</a><br>
            &nbsp;&nbsp;&nbsp;&nbsp;類方法通過@ISA數(shù)組繼承,變量的繼承必須明確設(shè)定。下例創(chuàng)建兩個類Bean.pm和Coffee.pm,其中Coffee.pm繼承Bean.pm的一些功能。此例演示如何從基類(或稱超類)繼承實例變量,其方法為調(diào)用基類的構(gòu)造函數(shù)并把自己的實例變量加到新對象中。<br>
            &nbsp;&nbsp;&nbsp;&nbsp;Bean.pm代碼如下:<br>
            <blockquote>package Bean;<br>
              require Exporter;<br>
              @ISA = qw(Exporter);<br>
              @EXPORT = qw(setBeanType);<br>
              <br>
              sub new {<br>
              &nbsp; my $type = shift;<br>
              &nbsp; my $this = {};<br>
              &nbsp; $this->{'Bean'} = 'Colombian';<br>
              &nbsp; bless $this, $type;<br>
              &nbsp; return $this;<br>
              }<br>
              <br>
              #<br>
              # This subroutine sets the class name<br>
              sub setBeanType{<br>
              &nbsp; my ($class, $name) = @_;<br>
              &nbsp; $class->{'Bean'} = $name;<br>
              &nbsp; print "Set bean to $name \n";<br>
              }<br>
              1;</blockquote>
                &nbsp;&nbsp;&nbsp;&nbsp;此類中,用$this變量設(shè)置一個匿名哈希表,將'Bean'類型設(shè)為'Colombian'。方法setBeanType()用于改變'Bean'類型,它使用$class引用獲得對對象哈希表的訪問。<br>
            &nbsp;&nbsp;&nbsp;&nbsp;Coffee.pm代碼如下:<br>

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
www.亚洲免费av| 精品久久久久久久久久久久久久久| 免费观看日韩电影| 国产目拍亚洲精品99久久精品| 日本精品一区二区三区高清| 国产成人自拍高清视频在线免费播放| 一区二区三区产品免费精品久久75| 亚洲精品一区二区精华| 欧美日韩成人在线| 本田岬高潮一区二区三区| 看电视剧不卡顿的网站| 亚洲成人高清在线| 亚洲狠狠丁香婷婷综合久久久| 国产欧美精品一区aⅴ影院| 欧美一区二区女人| 精品视频资源站| 91蝌蚪porny九色| 国产风韵犹存在线视精品| 久久精品国产一区二区| 五月天网站亚洲| 一区二区三区精品| 亚洲视频免费在线观看| 国产精品欧美久久久久无广告| 精品成人在线观看| 欧美不卡激情三级在线观看| 日韩一区二区三区免费看| 91精品国产全国免费观看| 91麻豆精品国产91| 欧美色精品天天在线观看视频| 91啪亚洲精品| 91麻豆免费观看| 99re这里只有精品首页| 99国产精品视频免费观看| av不卡免费在线观看| 成人看片黄a免费看在线| 福利视频网站一区二区三区| 国产麻豆精品在线| 国产乱一区二区| 国产 欧美在线| 99久久免费国产| 99精品视频一区二区三区| 成人涩涩免费视频| 99久久精品国产麻豆演员表| 99久久综合99久久综合网站| 92精品国产成人观看免费| av一区二区久久| 久久精品av麻豆的观看方式| 夜夜精品视频一区二区 | 极品少妇xxxx精品少妇偷拍 | 国产一区在线观看视频| 国产一区二区在线免费观看| 国产精品一区二区在线观看不卡| 国产一区二区三区免费看| 国产在线观看一区二区| 高清日韩电视剧大全免费| 99视频在线精品| 欧美午夜精品久久久久久超碰| 欧美视频三区在线播放| 8v天堂国产在线一区二区| 精品精品国产高清一毛片一天堂| 久久久久九九视频| 亚洲视频资源在线| 同产精品九九九| 久久99这里只有精品| 国产盗摄一区二区三区| 色噜噜久久综合| 91精品黄色片免费大全| 国产一区免费电影| 亚洲人成在线播放网站岛国| 亚洲精品高清在线观看| 奇米影视一区二区三区小说| 国产精品一区二区黑丝| 91浏览器打开| 欧美一区二区三区免费| 国产日产欧产精品推荐色| 亚洲视频精选在线| 成人开心网精品视频| 欧美三级三级三级| 久久久久国产成人精品亚洲午夜| 国产精品久久午夜夜伦鲁鲁| 午夜精品成人在线视频| 国产伦理精品不卡| 欧美日韩在线精品一区二区三区激情| 欧美一级日韩一级| 中文字幕日韩一区| 免费高清在线一区| 色综合中文字幕| 久久人人爽人人爽| 午夜精品久久久久久久久久 | 国产曰批免费观看久久久| 色综合色狠狠综合色| 日韩网站在线看片你懂的| 亚洲免费伊人电影| 精品亚洲国产成人av制服丝袜| 色丁香久综合在线久综合在线观看| 日韩欧美久久久| 亚洲精品久久久久久国产精华液| 久久99精品久久久久久久久久久久| 99精品在线观看视频| 久久婷婷国产综合精品青草| 亚洲国产cao| 91污片在线观看| 久久天堂av综合合色蜜桃网| 天天综合网天天综合色| 一本一道波多野结衣一区二区| 久久久午夜电影| 日本vs亚洲vs韩国一区三区| 91福利国产精品| 国产精品美日韩| 国产精品自拍在线| 欧美大片在线观看一区二区| 亚洲一区二区三区不卡国产欧美| 99精品视频在线观看| 国产亚洲人成网站| 狠狠色综合日日| 欧美一区二区免费| 亚洲第一成人在线| 欧美最新大片在线看| 亚洲丝袜制服诱惑| 97se狠狠狠综合亚洲狠狠| 国产精品天干天干在观线| 国产麻豆9l精品三级站| 精品人在线二区三区| 麻豆专区一区二区三区四区五区| 欧美老肥妇做.爰bbww| 一区二区三区在线观看视频| 91麻豆免费在线观看| 中文字幕综合网| 91麻豆精东视频| 亚洲日本va午夜在线影院| 不卡av在线网| 国产精品国产三级国产普通话99| 国产精品99久久久久久有的能看| 日韩精品一区二区三区在线观看| 免费在线观看成人| 欧美成人三级电影在线| 精品一区二区三区久久久| 久久久久国产一区二区三区四区| 国产精品一区二区三区四区| 国产女人18水真多18精品一级做| 国产成人在线观看| 国产免费成人在线视频| 国产一区二区三区蝌蚪| 亚洲精品一区二区三区99| 国产乱码精品一品二品| 国产欧美精品一区二区三区四区| 成人午夜电影小说| 一区二区三区在线播放| 欧美伊人久久久久久午夜久久久久| 一区二区三区欧美激情| 欧美人伦禁忌dvd放荡欲情| 日本美女一区二区| 久久综合狠狠综合久久综合88 | 国产亚洲精品bt天堂精选| 国产精品一区二区无线| 中文字幕在线一区二区三区| 91亚洲国产成人精品一区二区三| 亚洲女厕所小便bbb| 538prom精品视频线放| 久久99最新地址| 亚洲欧美在线高清| 欧美日韩在线播| 久久狠狠亚洲综合| 国产精品久久久久久久久久免费看| 色综合一个色综合| 美女高潮久久久| 国产蜜臀av在线一区二区三区| 91美女在线看| 久久不见久久见免费视频7| 国产精品天干天干在观线| 欧美体内she精视频| 蜜臂av日日欢夜夜爽一区| 国产日韩欧美一区二区三区乱码| 91美女在线看| 激情六月婷婷综合| 亚洲色图20p| 日韩视频123| 成人av网址在线观看| 丝瓜av网站精品一区二区| 国产亚洲一区二区三区在线观看| 日本二三区不卡| 狠狠色狠狠色综合系列| ●精品国产综合乱码久久久久| 欧美一区二区三区思思人| 欧美日韩国产系列| 国产一区二区三区香蕉| 亚洲国产欧美日韩另类综合| 久久男人中文字幕资源站| 91高清在线观看| 国产精品一区在线观看你懂的| 一区二区三区美女| 久久久.com| 日韩小视频在线观看专区| 色综合久久中文综合久久97| 久草中文综合在线| 天堂成人免费av电影一区| 一区精品在线播放| 久久亚洲一级片| 欧美日韩精品一区二区天天拍小说| 福利一区二区在线观看|