Spec-Zone.ru › Perl 5.36

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–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.36.0/base

Spec-Zone.ru

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