Spec-Zone.ru › Perl 5.38

parent

СОДЕРЖАНИЕ

  • ИМЯ
  • СИНТАКСИС
  • ОПИСАНИЕ
  • ИСТОРИЯ
  • ОСОБЕННОСТИ
  • СМОТРИ ТАКЖЕ
  • АВТОРЫ И СОАВТОРЫ
  • ОБНОВИТЕЛЬ
  • ЛИЦЕНЗИЯ

ИМЯ

parent - Установить отношение ISA с базовыми классами во время компиляции

СИНТАКСИС

package Baz;
use parent qw(Foo Bar);

ОПИСАНИЕ

Позволяет загрузить один или несколько модулей и одновременно настроить наследование от этих модулей. По сути, аналогично

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

По умолчанию каждый базовый класс должен находиться в отдельном файле. Если вы хотите иметь подкласс и его базовый класс в одном файле, вы можете указать parent не загружать модули, используя переключатель %%%CODE_BLOCK_5%%:

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–2023 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.38.0/parent

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API