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范例中看到 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |