面向對象的 Perl
開篇
3.1 三條規則
第一,創建一個包。
要用 perl 寫一個類,首先要創建一個包。 Perl 中的包已經有了一些類的特性:
* 包可以集合有關係的一組代碼
* 包有自己的命名空間
第二, perl 中類的方法就是 subroutine
如果有一個變量 $refHero 指向一個 hero 的類, hero 類有 fight, fly 等的方法,通過 -> 就可以訪問這些方法。 $refHero->fly; $ refHero->fight ;
用 -> 訪問方法符合 perl 的一貫用法:
$refHash->{key}; # 取得哈西的值
$refArray->[$index]; # 取得數組中的元素
$refSub->(@args); # 訪問一個子程序
$refObj->method(@args); # 訪問類的方法
Tipps: 如果你讀 reference 不熟悉的話,是着用 XML::Simple 寫個小程序,你一定有很深的瞭解。
方法可以如下的使用,但兩者之間是有區別的:
$refHero->fly(„5km“);
或是
Hero::fly(„5km“);
前者傳遞給 fly 的參數實際上是 ($refHero, „5km“), 而後者就像是一個普通的 sub 一樣,僅僅傳遞了 („5km“) 。
瞭解到這點下面的代碼就好理解了
package Hero;
sub fly
{
my ($self, @args) = @_;
}
通過 $self 就可以訪問自己命名空間裏的東東了。因爲 perl 裏,參數的傳遞是 call by reference, 所以上面的這種寫法還有一個好處就是不會把 sub 裏把傳遞過來的參數改了(這常常是我們不想的)。
第三, 創建一個 ref
bless 完成這一工作。 bless 有兩個參數:一個 ref ,一個字符串。