Perl继承
在Perl中,给定标量$myScalar中的包名My::package,确定My::package是否具有名为My::package::parent的父级的最佳方法是什么?这里的限制是My::Package可能尚未加载,并且我们不知道类构造函数所需的参数Perl继承,perl,Perl,在Perl中,给定标量$myScalar中的包名My::package,确定My::package是否具有名为My::package::parent的父级的最佳方法是什么?这里的限制是My::Package可能尚未加载,并且我们不知道类构造函数所需的参数 谢谢我想你会想要isa,或者直接探索@isa,但也可以在man perlobj中查看DOES和can。我想你会想要isa,或者直接探索@isa,但也可以在man perlobj中查看DOES和can。好吧,在类存在之前,你无法知道父类有什么,因
谢谢我想你会想要isa,或者直接探索@isa,但也可以在man perlobj中查看DOES和can。我想你会想要isa,或者直接探索@isa,但也可以在man perlobj中查看DOES和can。好吧,在类存在之前,你无法知道父类有什么,因此,您需要加载定义它的模块。然后,您可以使用通用方法isa来查找它是否继承自My::Package::Parent 参考:
在类存在之前,您无法知道类对父类有什么,因此您需要加载定义它的模块。然后,您可以使用通用方法isa来查找它是否继承自My::Package::Parent 参考:
在加载My::Package(例如,通过use)之前,它没有任何父级。在加载My::Package(例如,通过use)之前,它没有任何父级。
my $class = 'My::Package';
my $file = $class; # Or:
$file =~ s{::}{/}g; # eval "require $class;" or die $@;
$file .= '.pm'; #
require $file; #
if ($class->isa('My::Package::Parent')) {
...
}