a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > Perl > 正文

Perl5 OOP學習筆記第1/2頁

2020-06-04 20:27:35
字體:
來源:轉載
供稿:網友
在學習了Perl的基本語法之后,學習Perl的OOP,略有心得。不知道Perl各個版本之間OOP是否有區別,但是我是學習的Perl5,所以在標題上將版本號也寫出來了。因為了解到PHP4和PHP5的OOP部分就有不小的差別,所以有此擔心。
  學習Perl的OOP,最關鍵的兩件事情就是package和bless。只要把這兩個東西搞清楚也就學會大一半了。
Perl的package
  感覺Perl的package和Java還真有點相似。Java的package是以CLASSPATH中的目錄為根,按目錄定義和搜索分級包名。Perl也類似,是以@INC數組中的目錄為根,按目錄搜索分級包名。不過有一點不同,Perl的package定義貌似不需要與目錄結構對應。具體是什么樣的規則我沒有去研究,因為按目錄結構定義package是個好習慣。
  相較于Java,Perl的package還有一點很有意思。Java的每層package對應一個目錄,而最后是一個class文件對應到類名。Perl卻簡化了,package直接就把目錄和文件名都引用了進去。比如
  Java中,name.jamesfancy.MyClass,對應的是/name/jamesfancy/MyClass.class,源代碼中則分成兩句來寫
代碼如下:
package name.jamesfancy;
class MyClass {....}
package name.jamesfancy;
class MyClass {....}

  Perl中,name::jamesfancy::MyClass,應對的是/name/jamesfancy/MyClass.pm,源代碼中只有一句package就說明了
代碼如下:
package name::jamesfancy::MyClass;
package name::jamesfancy::MyClass;

  至于package中的內容,也就是變量和子程序,至于區別,稍后再說。
bless函數
  bless是用來把一個類綁定到引用類型變量的函數。很奇怪Perl為什么要用這個單詞,不過沒關系,我們可以把它想像得形象一點:就像游戲里牧師通過祝福技能為某人加上BUFF一樣,bless把一個類綁定到某個引用類型的變量,從此這個變量就受到了祝福,擁有了這個類中的變量和子程序。
  bless的用法通常是:bless($引用變量, 類名);
  引用變量貌似可以是任何引用類型的變量,我嘗試過Scalar,Array和Hash的引用,都能成功。在bless之外,這個引用變量就可以被稱之為對象了,當然它仍然是個引用,是對象的引用。
  有一點還需要注意,雖然這個對象擁有了類的變量和子程序,但我們應該把它擁有的類的變量和子程序都看成是靜態的,換句話說,就是類的成員。在這一點上,子程序的處理會比較特殊一點,但至少類的變量,也就是包變量,是不屬于對象的。因此,所有對象的數據都保存在對象引用的原始數據中。既然大家都習慣對象數據以鍵值對的方式保存,所以通常情況下,bless的引用變量,都是Hash的引用了。
  很抽象么?舉個例子。如果對OOP的成員函數還不夠了解,那就只看下面示例中每個類的test函數中第一句以后的內容不好。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 三级视频在线观看 | www精品 | 久久在线视频 | 国产精品久久久久久久久久久久冷 | 国产成人精品一区二 | 黄a免费网络 | 国产毛片精品 | 欧美精品99 | 在线观看不卡一区 | 亚洲一区二区在线播放 | 二区三区 | 日日摸天天爽天天爽视频 | 91免费在线播放 | 99精品视频在线 | 亚洲日日 | 亚洲一区二区三区久久 | 亚洲女同老女人女同志 | 亚洲二区在线观看 | 日韩精品无玛区免费专区又长又大 | 欧美极品一区二区 | 黄色一级免费大片 | 久久久亚洲一区二区三区 | 精品超碰 | 中文字幕在线观看精品视频 | 日韩精品在线免费观看 | 欧美高清不卡 | 亚洲一区二区三 | 亚洲激情网站 | 天天艹天天干天天 | 国产91在线观看 | 日本在线观看 | 一区二区三区av | 逼逼av| 国产精品理论片 | 久久这里只有精品首页 | 97精品视频在线观看 | 日韩三级电影在线免费观看 | 一区二区三区视频在线 | 91 中文字幕| av中文在线 | 一本色道久久综合亚洲精品不 |