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–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