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