parent
СОДЕРЖАНИЕ
ИМЯ
parent - Установление отношения ISA с базовыми классами во время компиляции
СИНТАКСИС
package Baz;
use parent qw(Foo Bar); ОПИСАНИЕ
Позволяет загружать один или несколько модулей, одновременно настраивая наследование от этих модулей. По большей части аналогично
package Baz;
BEGIN {
require Foo;
require Bar;
push @ISA, qw(Foo Bar);
} По умолчанию каждый базовый класс должен находиться в отдельном файле. Если вы хотите иметь подкласс и его базовый класс в одном файле, вы можете сказать parent не загружать никакие модули, используя переключатель -norequire:
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 corion@cpan.org
Copyright (c) 2007-2017 Max Maischein <corion@cpan.org> Основано на идее base.pm, которая была введена с Perl 5.004_04.
ЛИЦЕНЗИЯ
Этот модуль выпущен под теми же условиями, что и сам Perl.
© 1993–2020 Larry Wall and others
Licensed under the GNU General Public License version 1 or later, or the Artistic License.
The Perl logo is a trademark of the Perl Foundation.
https://perldoc.perl.org/5.32.0/parent