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
一个模块时,如果找不到该模块的文件,它不会终止,但会因任何其他错误而终止。在所有这些之后,如果您的基类为空,不包含任何符号,base
将终止。这对于从与您自己位于同一文件中的类继承很有用,但文件名与基模块名称不匹配,如下所示
# 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
不会终止。
如果其中一个基类具有字段,base
也会初始化该字段。不支持字段的多重继承,如果两个或多个基类各自具有可继承字段,则“base”pragma 将 croak。有关此功能的说明,请参阅 fields。
基类的 import
方法不会被调用。
base.pm 无法加载 base 包,因为它在你的路径中找不到。
尝试从自身继承会生成一个警告。
package Foo;
use base 'Foo';
此模块在 Perl 5.004_04 中引入。
由于实现的限制,你必须在声明任何自己的字段之前使用 base。