Spec-Zone.ru › Perl 5.28

base

СОДЕРЖАНИЕ

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

ИМЯ

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

СИНТАКСИС

package Baz;
use base qw(Foo Bar);

ОПИСАНИЕ

Если вы не используете fields pragma, этот модуль рекомендуется использовать, предпочтительнее лёгкого в использовании 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–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.28.3/base

Spec-Zone.ru

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