Ах, хороший вопрос!
Will the subclass inherit the use statements from the parent?
Ну, это зависит от того, что вы подразумеваете под наследованием.Я не буду делать никаких предположений до конца, но ответ будет возможно .Видите ли, Perl смешивает идеи Classes
, а Namespaces
- package
- это термин, который может описать любой из них.Теперь проблема заключается в утверждении use
, все, что он делает, это принудительно включает пакет и вызывает цель import()
sub.Это означает, что он по сути имеет неограниченный контроль над вашим пакетом - и, таким образом, ваш класс.
Теперь, соедините это со всеми методами в perl, которые будут не более чем subs
, которые принимают $self
в качестве первого аргумента.по соглашению, и вы остались с Perl5.Это имеет огромный плюс для тех, кто знает, как его использовать.В то время как строгая лексическая прагма, как насчет Moose
?
package BigMooseUser;
use Moose;
package BabyMooseUser;
our @ISA = 'BigMooseUser';
package Foo;
my $b = BabyMooseUser->new;
print $b->meta->name;
Теперь, откуда BabyMooseUser
получил конструктор (новый)?Откуда он взял мета класс?Все это предоставляется из единственного use Moose;
в родительском классе (пространстве имен).Итак,
Will the subclass inherit the use statements from the parent?
Хорошо, здесь, в нашем примере, если эффекты оператора use заключаются в добавлении методов, чем, конечно,.
Эта тема является своего родаглубоко, и это зависит от того, говорите ли вы о прагмах, или о более неясных объектных структурах, или о процедурных модулях.Если вы хотите, чтобы пространство имен родителей не влияло на ваше собственное в парадигме ОО, см. namespace::autoclean
.