麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > 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函數中第一句以后的內容不好。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 黑人一级片视频 | 在线播放av网址 | 欧美精品18videos性欧美 | 高清国产在线 | 国产中文av在线 | 99国产精品国产免费观看 | 国产做爰全免费的视频黑人 | 成人毛片视频在线观看 | xnxx 日本19| 成人精品 | 毛片电影网址 | 国产精品hd免费观看 | av在线高清观看 | 香蕉国产在线视频 | 亚洲视频高清 | 草草久 | 中文字幕精品在线视频 | 毛片一级片 | 国产成人在线观看免费网站 | 欧美a欧美| 免费视频aaa | 神马福利网 | 久久精品亚洲欧美日韩精品中文字幕 | 泰剧19禁啪啪无遮挡 | 在线a毛片免费视频观看 | 色淫网站免费视频 | 国产午夜精品久久久 | 青青操国产| 福利一区二区三区视频在线观看 | 国产亚洲欧美日韩高清 | 曰批全过程120分钟免费69 | 污黄视频在线观看 | 欧美日韩免费在线观看视频 | 久久中文免费 | videos真实高潮xxxx | 91久久极品少妇韩国 | 高清av在线 | 亚洲一区二区网址 | 免费网址黄 | 久久午夜神器 | 青热久思思 |