base - 編譯時建立與基底類別的 ISA 關係
package Baz;
use base qw(Foo Bar);
除非您正在使用 fields
pragma,否則建議您使用較輕量的 parent
,並避免使用此模組。
允許您同時載入一個或多個模組,並同時設定從這些模組繼承的關係。與以下指令的效果大致相同
package Baz;
BEGIN {
require Foo;
require Bar;
push @ISA, qw(Foo Bar);
}
當 base
嘗試 require
一個模組時,如果找不到模組檔案,它不會 die,但會在任何其他錯誤時 die。在所有這些之後,如果您的基底類別是空的,不包含任何符號,base
將會 die。這對於繼承與您在同一個檔案中的類別很有用,但檔案名稱與基底模組名稱不匹配,如下所示
# in Bar.pm
package Foo;
sub exclaim { "I can have such a thing?!" }
package Bar;
use base "Foo";
沒有 Foo.pm,但由於 Foo
定義了一個符號(exclaim
子常式),因此當 require
無法載入 Foo.pm 時,base
也不會 die。
如果其中一個基底類別有欄位,base
也會初始化該欄位。不支援欄位的多重繼承,如果兩個或多個基底類別各自有可繼承的欄位,則 'base' pragma 將會 croak。請參閱 fields 以取得此功能的說明。
基礎類別的 import
方法沒有被呼叫。
base.pm 無法需要基礎套件,因為在路徑中找不到它。
嘗試繼承它自己會產生一個警告。
package Foo;
use base 'Foo';
這個模組在 Perl 5.004_04 中被引入。
由於實作的限制,你必須在宣告任何你自己的欄位之前使用基礎。