加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 22:01:28 所属栏目:大数据 来源:网络整理
导读:让我们说一个文件中有一个父Perl类: #!/usr/bin/perlpackage Foo;use strict;use warnings;use Data::Dumper;sub new{ my $class = shift; my %self = (); return bless %self,$class;}1; 和一个不同文件中的子类: #!/usr/bin/perlpackage Bar;use base "F
让我们说一个文件中有一个父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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读