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 до объявления любых собственных полей.
СМОТРИТЕ ТАКЖЕ
© 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.30.3/base