Perl 使用`bless'创建具有继承的对象`
如何使用Perl 使用`bless'创建具有继承的对象`,perl,oop,inheritance,Perl,Oop,Inheritance,如何使用bless创建具有继承性的匿名类的对象 我想我需要设置@ISA,但是如何使用严格的来实现这一点呢 在暗示了一下之后,我看了一眼。他们通过 no strict 'refs'; @{"$anon_class\::ISA"} = $parent; 有没有一种方法仍然使用严格的引用来实现这一点?用于为类设置基类祝福与继承无关: package Derived; use warnings; use strict; use parent qw(Base); sub new { my $
bless
创建具有继承性的匿名类的对象
我想我需要设置@ISA
,但是如何使用严格的来实现这一点呢
在暗示了一下之后,我看了一眼。他们通过
no strict 'refs';
@{"$anon_class\::ISA"} = $parent;
有没有一种方法仍然使用严格的引用来实现这一点?用于为类设置基类<代码>祝福
与继承无关:
package Derived;
use warnings;
use strict;
use parent qw(Base);
sub new {
my $class = shift;
return bless {}, $class;
}
如果你在玩这些东西,你有时会违反strict
。Pragmastrict
可以保护您免受错误。如果你确定你在做什么,那么在有限的范围内关闭strict
是完全可以的,最好是限制在OP中的特定内容。因此,当你知道你在做什么时,这段代码就可以了
{
no strict 'refs';
@{"$anon_class\::ISA"} = ($parent);
}
有没有一种方法可以通过使用严格的引用来实现这一点
为什么??这正是严格的目的。当然,你可以愚弄严格,但最好清楚你正在做严格通常禁止的事情
依我看,
{ no strict 'refs'; @{ $anon_class . '::ISA' } = $parent; }
比使用eval
或%:
(即使它们不长)要好得多。这意味着我无法实例化从另一个(非匿名)类继承的匿名类?@ManuelFaux请参阅。