新聞中心
本文和大家重點(diǎn)討論一下Perl類(lèi)、對(duì)象、包的概念及使用,Perl類(lèi)是一個(gè)Perl包,其中含提供對(duì)象方法的Perl類(lèi),而對(duì)象是對(duì)Perl類(lèi)中數(shù)據(jù)項(xiàng)的引用。

專(zhuān)業(yè)成都網(wǎng)站建設(shè)公司,做排名好的好網(wǎng)站,排在同行前面,為您帶來(lái)客戶和效益!創(chuàng)新互聯(lián)公司為您提供成都網(wǎng)站建設(shè),五站合一網(wǎng)站設(shè)計(jì)制作,服務(wù)好的網(wǎng)站設(shè)計(jì)公司,成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作負(fù)責(zé)任的成都網(wǎng)站制作公司!
Perl類(lèi)、對(duì)象、包概念解析
Perl類(lèi)與對(duì)象
◆Perl類(lèi)是一個(gè)Perl包,其中含提供對(duì)象方法的Perl類(lèi)。
◆方法是一個(gè)Perl子程序,Perl類(lèi)名是其***個(gè)參數(shù)。
◆對(duì)象是對(duì)Perl類(lèi)中數(shù)據(jù)項(xiàng)的引用。
◆首先,創(chuàng)建一個(gè)名為Cocoa.pm的包文件(擴(kuò)展名pm是包的缺省擴(kuò)展名,意為PerlModule)。一個(gè)模塊就是一個(gè)包,一個(gè)包就是一個(gè)Perl類(lèi)。在做其它事之前,先加入1;”這樣一行,當(dāng)你增加其它行時(shí),記住保留“1;”為***一行。這是Perl包的必需條件,否則該包就不會(huì)被Perl處理。下面是該文件的基本結(jié)構(gòu)。
包
packageCocoa;
requireExporter;
@ISA=qw(Exporter);
@EXPORT=qw(setImports,declareMain,closeMain);
#這兩行包含上Exporter.pm模塊,并把ExporterPerl類(lèi)名加入@ISA數(shù)組以供查找。接下來(lái)把你自己的Perl類(lèi)方法列在@EXPORT數(shù)組中就可以了。例如想輸出方法closeMain和declareMain,語(yǔ)句如下:@EXPORT=qw(declareMain,closeMain);
構(gòu)造函數(shù)
構(gòu)造函數(shù)是Perl類(lèi)的子程序,它返回與Perl類(lèi)名相關(guān)的一個(gè)引用。將Perl類(lèi)名與引用相結(jié)合稱(chēng)為“祝?!币粋€(gè)對(duì)象,因?yàn)榻⒃摻Y(jié)合的函數(shù)名為bless(),其語(yǔ)法為:
#blessYeReference[,classname]
#YeReference是對(duì)被“祝?!钡膶?duì)象的引用,classname是可選項(xiàng),指定對(duì)象獲取方法的包名用于繼承其他Perl類(lèi),其缺省值為當(dāng)前包名。
創(chuàng)建一個(gè)構(gòu)建函數(shù)的方法為返回已與該P(yáng)erl類(lèi)結(jié)合的內(nèi)部結(jié)構(gòu)的引用,如:構(gòu)造函數(shù)
- subnew{
- my$this={};#Createananonymoushash,and#selfpointstoit.
- bless$this;#ConnectthehashtothepackageCocoa.bless$this,$parentClass
- return$this;#Returnthereferencetothehash.
- }
{}創(chuàng)建一個(gè)對(duì)不含鍵/值對(duì)的哈希表(即關(guān)聯(lián)數(shù)組)的引用,返回值被賦給局域變量$this。函數(shù)bless()取出該引用,告訴對(duì)象它引用的是Cocoa,***返回該引用。函數(shù)的返回值現(xiàn)在指向這個(gè)匿名哈希表。
從new()函數(shù)返回后,$this引用被銷(xiāo)毀,但調(diào)用函數(shù)保存了對(duì)該哈希表的引用,因此該哈希表的引用數(shù)不會(huì)為零,從而使Perl在內(nèi)存中保存該哈希表。
Perl類(lèi)的調(diào)用
- 1#!/usr/bin/perl
- 2push(@INC,'pwd');
- 3useCocoa;
- 4$cup=newCocoa;#或者$cup=cocoa->new();或$cup=Cocoa::new();
包的構(gòu)造函數(shù)
- subnew{
- my$type=shift;
- my%parm=@_;
- my$this=[];
- $this->[0]=$parm{'Name'};
- $this->[1]=$parm{'x'};
- $this->[2]=$parm{'y'};
- bless$this,$type;
- }
新建對(duì)象:
$mug=Cocoa::new('Name'=>'top','x'=>10,'y'=>20);
操作符=>與逗號(hào)操作服功能相同,但=>可讀性好。訪問(wèn)方法如下:
print"Name=$mug->{'Name'}\n";
print"x=$mug->{'x'}\n";
print"y=$mug->{'y'}\n";
Perl類(lèi)靜態(tài)方法:
- 1.subnameLister{
- 2.my$this=shift;#構(gòu)造函數(shù)即靜態(tài)方法。虛方法通常首先把***個(gè)參數(shù)shift到變量self或this中,然后將該值作普通的引用使用
- 3.my($keys,$value);
- 4.while(($key,$value)=each(%$this)){
- 5.print"\t$keyis$value.\n";
- 6.}
- 7.}
【編輯推薦】
- 構(gòu)造函數(shù)中Perl方法用法解析
- Perl類(lèi)及創(chuàng)建方法揭秘
- 術(shù)語(yǔ)匯編 Perl類(lèi)概念詳解
- 淺析Perl面向?qū)ο缶幊逃梅?/li>
- 解析Perl語(yǔ)言中Perl類(lèi)的注釋和創(chuàng)建方法
本文標(biāo)題:淺析Perl語(yǔ)言中的Perl類(lèi)、對(duì)象、包概念
URL標(biāo)題:http://www.dlmjj.cn/article/dpijsoo.html


咨詢
建站咨詢
