Perl子类是否继承了导入的模块和编译指示?

前端之家收集整理的这篇文章主要介绍了Perl子类是否继承了导入的模块和编译指示?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
让我们说一个文件中有一个父Perl类:
#!/usr/bin/perl
package Foo;
use strict;
use warnings;

use Data::Dumper;

sub new{
    my $class = shift;
    my %self = ();
    return bless %self,$class;
}
1;

和一个不同文件中的子类:

#!/usr/bin/perl
package Bar;
use base "Foo";
1;

子类将继承父级的使用语句吗?我知道新的方法将被继承.

基本上我试图减少我的代码中的样板数量,我找不到这个问题的明确答案.

解决方法

啊,好问题!
Will the subclass inherit the use statements from the parent?

这取决于你的意思是继承.到最后我不会作任何假设,但答案也许是这样.你看,perl混合了类和命名空间的想法 – 一个包是一个可以描述它们的术语.现在的问题是语句使用它所做的就是强制一个包的包装,并调用目标import()sub.这意味着它本质上可以无限制地控制你的包 – 并且通过你的类.

现在,将perl与perl中的所有方法相结合,只不过是通过惯例将$self作为第一个参数,而是留给perl5.对于那些知道如何使用它的人来说,这是一个巨大的上升空间.虽然严格是一个词汇语法,麋鹿呢?

package BigMooseUser;
use Moose;

package BabyMooseUser;
our @ISA = 'BigMooseUser';

package Foo;
my $b = BabyMooseUser->new;
print $b->Meta->name;

现在,BabyMooseUser从哪里获取构造函数(new)?从哪里获得元类?所有这一切都是从单次使用的Moose;在父类(namespace)中.所以

Will the subclass inherit the use statements from the parent?

那么这里,在我们的例子中,如果使用语句的效果添加方法,那肯定是.

这个问题很深入,它取决于你是否在谈论pragmas,还是更晦涩的对象框架或者程序模块.如果你想减轻一个父母的命名空间,可以在OO范例中看到namespace::autoclean.

猜你在找的Perl相关文章