91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用Perl的Perl面向對象編程

發布時間:2021-12-06 10:57:00 來源:億速云 閱讀:123 作者:小新 欄目:開發技術

這篇文章主要介紹如何使用Perl的Perl面向對象編程,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

一、模塊簡介

模塊(module)就是Perl包(pachage)。Perl中的對象基于對包中數據項的引用。(引用見第x章引用)。
詳見http://www.nease.net/tppmsgs/msgs0.htm#28的perlmod和perlobj。
在用其他語言進行Perl面向對象編程時,先聲明一個類然后創建該類的對象(實例),特定類任何對象的行為方式是相同的,由類方法確定,能夠通過定義新類或從現存類繼承來創建類。已熟悉Perl面向對象編程的人能夠在此碰到許多熟悉的術語。Perl一直是個Perl面向對象的語言,在Perl5中,語法略有變動,更規范化了對象的使用。

下面三個定義對理解對象、類和方法在Perl中如何工作至關重要。
◆類是個Perl包,其中含提供對象方法的類。
◆方法是個Perl子程式,類名是其***個參數。
◆對象是對類中數據項的引用。.

二、Perl中的類

再強調一下,一個Perl類是僅是個包而已。當您看到Perl文檔中提到“類”時,把他看作“包”就行了。Perl5的語法能夠創建類,假如您已熟悉C,那么大部分語法您已掌控了。和Perl4不同的概念是用雙冒號(::)來標識基本類和繼承類(子類)。
Perl面向對象的一個重要特性是繼承。Perl中的繼承特性和其他Perl面向對象語言不完全相同,他只繼承方法,您必須用自己的機制來實現數據的繼承。
因為每個類是個包,所以他有自己的名字空間及自己的符號名關聯數組(詳見第x章關聯數組),每個類因而能夠使用自己的單獨符號名集。和包的引用結合,能夠用單引號(\\')操作符來定位類中的變量,類中成員的定位形式如:$class\\'$member。在Perl5中,可用雙冒號替代單引號來獲得引用,如:$class\\'$member和$class::$member相同。.

三、創建類

本節介紹創建一個新類的必要步驟。下面使用的例子是創建一個稱為Cocoa的簡單的類,其功能是輸出一個簡單的Java應用的源碼的必要部分。放心,這個例子無需您有Java的知識,但也不會使您成為Java專家,其目的是講述創建類的概念。
首先,創建一個名為Cocoa.pm的包文檔(擴展名pm是包的缺省擴展名,意為PerlModule)。一個模塊就是個包,一個包就是個類。在做其他事之前,先加入“1;”這樣一行,當您增加其他行時,記住保留“1;”為***一行。這是Perl包的必需條件,否則該包就不會被Perl處理。.

四、構造函數

Perl面向對象中構造函數是類的子程式,他返回和類名相關的一個引用。將類名和引用相結合稱為“祝福”一個對象,因為建立該結合的函數名為bless(),其語法為:
blessYeReference[,classname]
YeReference是對被“祝福”的對象的引用,classname是可選項,指定對象獲取方法的包名,其缺省值為當前包名。
創建一個構建函數的方法為返回已和該類結合的內部結構的引用。如..

subnew{  my$this={};#Createananonymoushash,and#selfpointstoit.  bless$this;#ConnectthehashtothepackageCocoa.  return$this;#Returnthereferencetothehash.  }

五、方法

Perl類的方法只但是是個Perl子程式而已,也即通常所說的成員函數。Perl面向對象中Perl的方法定義不提供任何特別語法,但規定方法的***個參數為對象或其被引用的包。Perl有兩種方法:靜態方法和虛方法。
靜態方法***個參數為類名,虛方法***個參數為對象的引用。方法處理***個參數的方式決定了他是靜態的還是虛的。靜態方法一般忽略掉***個參數,因為他們已知道自己在哪個類了,構造函數即靜態方法。虛方法通常首先把***個參數shift到變量self或this中,然后將該值作普通的引用使用。.

六、方法的輸出

假如您現在想引用Cocoa.pm包,將會得到編譯錯誤說未找到方法,這是因為Cocoa.pm的方法還沒有輸出。輸出方法需要Exporter模塊,在包的開始部分加上下列兩行:
requireExporter;
@ISA=qw(Exporter);
Perl面向對象中Perl類的繼承是通過@ISA數組實現的。@ISA數組無需在任何包中定義,然而,一旦他被定義,Perl就把他看作目錄名的特別數組。他和@INC數組類似,@INC是包含文檔的尋找路徑。@ISA數組含有類(包)名,當一個方法在當前包中未找到時就到@ISA中的包去尋找。@ISA中還含有當前類繼承的基類名。

類中調用的任何方法必須屬于同一個類或@ISA數組定義的基類。假如一個方法在@ISA數組中未找到,Perl就到AUTOLOAD()子程式中尋找,這個可選的子程式在當前包中用sub定義。若使用AUTOLOAD子程式,必須用useAutoload;語句調用autoload.pm包。AUTOLOAD子程式嘗試從已安裝的Perl庫中裝載調用的方法。假如AUTOLOAD也失敗了,Perl再到UNIVERSAL類做***一次嘗試,假如仍失敗,Perl就生成關于該無法解析函數的錯誤。..

七、方法的調用

調用一個對象的方法有兩種方法,一是通過該象的引用(虛方法),一是直接使用類名(靜態方法)。。

以上是“如何使用Perl的Perl面向對象編程”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

嘉峪关市| 东方市| 安平县| 齐河县| 襄樊市| 开封市| 萝北县| 阿鲁科尔沁旗| 海兴县| 西充县| 辉县市| 阿坝| 永川市| 五台县| 陆川县| 天水市| 永修县| 岳阳市| 年辖:市辖区| 横山县| 宁安市| 青田县| 庆云县| 湘阴县| 芜湖市| 济阳县| 江山市| 无锡市| 鄂托克前旗| 乐清市| 辽宁省| 于田县| 恩平市| 东至县| 达孜县| 广河县| 红原县| 临汾市| 县级市| 阜南县| 新晃|