内容

名称

parent - 在编译时建立与基类的 ISA 关系

概要

package Baz;
use parent qw(Foo Bar);

描述

允许您同时加载一个或多个模块,并设置从这些模块继承的关系。在效果上与以下代码类似

package Baz;
BEGIN {
    require Foo;
    require Bar;
    push @ISA, qw(Foo Bar);
}

默认情况下,每个基类都需要存在于一个独立的文件中。如果您想在一个文件中包含子类及其父类,可以使用 -norequire 开关告诉 parent 不要加载任何模块

package Foo;
sub exclaim { "I CAN HAS PERL" }

package DoesNotLoadFooBar;
use parent -norequire, 'Foo', 'Bar';
# will not go looking for Foo.pm or Bar.pm

这等效于以下代码

package Foo;
sub exclaim { "I CAN HAS PERL" }

package DoesNotLoadFooBar;
push @DoesNotLoadFooBar::ISA, 'Foo', 'Bar';

这对于一个包位于不同名称的文件中的情况也很有用

package MyHash;
use Tie::Hash;
use parent -norequire, 'Tie::StdHash';

这等效于以下代码

package MyHash;
require Tie::Hash;
push @ISA, 'Tie::StdHash';

如果您想从一个require不会认为是有效文件名(即,它不以.pm.pmc结尾)的文件中加载子类,请使用以下代码

package MySecondPlugin;
require './plugins/custom.plugin'; # contains Plugin::Custom
use parent -norequire, 'Plugin::Custom';

历史

该模块是从base中分离出来的,以移除其中积累的冗余代码。

注意事项

参见

base
parent::versioned

parent的一个分支,它在父类模块中提供版本检查。

作者和贡献者

Rafaël Garcia-Suarez, Bart Lateur, Max Maischein, Anno Siegel, Michael Schwern

维护者

Max Maischein [email protected]

版权所有 (c) 2007-2017 Max Maischein <[email protected]> 基于base.pm的理念,该理念在 Perl 5.004_04 中引入。

许可证

该模块在与 Perl 本身相同的条款下发布。