Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.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继承_Perl - Fatal编程技术网

Perl继承

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。好吧,在类存在之前,你无法知道父类有什么,因

在Perl中,给定标量$myScalar中的包名My::package,确定My::package是否具有名为My::package::parent的父级的最佳方法是什么?这里的限制是My::Package可能尚未加载,并且我们不知道类构造函数所需的参数


谢谢

我想你会想要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')) {
   ...
}