Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 使用`bless'创建具有继承的对象`_Perl_Oop_Inheritance - Fatal编程技术网

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
。Pragma
strict
可以保护您免受错误。如果你确定你在做什么,那么在有限的范围内关闭
strict
是完全可以的,最好是限制在OP中的特定内容。因此,当你知道你在做什么时,这段代码就可以了

{
    no strict 'refs';
    @{"$anon_class\::ISA"} = ($parent);
}
有没有一种方法可以通过使用严格的引用来实现这一点

为什么??这正是严格的目的。当然,你可以愚弄严格,但最好清楚你正在做严格通常禁止的事情

依我看,

{ no strict 'refs'; @{ $anon_class . '::ISA' } = $parent; }

比使用
eval
%:
(即使它们不长)要好得多。

这意味着我无法实例化从另一个(非匿名)类继承的匿名类?@ManuelFaux请参阅。