内容

名称

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 方法不会被调用。

诊断

基类包“%s”为空。

base.pm 无法加载 base 包,因为它在你的路径中找不到。

类“Foo”尝试从自身继承

尝试从自身继承会生成一个警告。

package Foo;
use base 'Foo';

历史

此模块在 Perl 5.004_04 中引入。

注意事项

由于实现的限制,你必须在声明任何自己的字段之前使用 base。

另请参阅

fields