Spec-Zone.ru › Perl 5.38

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 также инициализирует поля, если у одного из базовых классов они есть. Множественное наследование полей НЕ поддерживается; если два или более базовых класса имеют наследуемые поля, директива 'base' выдаст ошибку. См. fields для описания этой функции.

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

ДИАГНОСТИКА

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

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

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

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

package Foo;
use base 'Foo';

ИСТОРИЯ

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

ЗАМЕЧАНИЯ

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

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

fields

© 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/base

Spec-Zone.ru

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