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