Spec-Zone.ru › Perl 5.34

base

СОДЕРЖАНИЕ

  • ИМЯ
  • СИНТАКСИС
  • ОПИСАНИЕ
  • ДИАГНОСТИКА
  • ИСТОРИЯ
  • ОГРАНИЧЕНИЯ
  • СМОТРИТЕ ТАКЖЕ

ИМЯ

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

СИНТАКСИС

package Baz;
use base qw(Foo Bar);

ОПИСАНИЕ

Если вы не используете директиву fields, то данный модуль рекомендуется использовать вместо более лёгкого 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), base не завершится ошибкой, когда require не сможет загрузить Foo.pm.

base также инициализирует поля, если один из базовых классов их имеет. Множественное наследование полей НЕ поддерживается; если два или более базовых класса имеют наследуемые поля, pragma 'base' выдаст ошибку. См. fields для описания этой функции.

Метод import базового класса не вызывается.

ДИАГНОСТИКА

Базовый класс пакет "%s" пуст.

base.pm не смог загрузить базовый пакет, потому что он не был найден в вашем пути.

Класс 'Foo' попытался унаследовать от самого себя

Попытка наследования от самого себя генерирует предупреждение.

package Foo;
use base 'Foo';

ИСТОРИЯ

Этот модуль был представлен с Perl 5.004_04.

ОГРАНИЧЕНИЯ

Из-за ограничений реализации вы должны использовать base до объявления своих собственных полей.

СМОТРИТЕ ТАКЖЕ

fields

© 1993–2021 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.34.0/base

Spec-Zone.ru

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