gpt4 book ai didi

Perl 继承 - 谁是父类的调用者

转载 作者:行者123 更新时间:2023-12-04 18:48:29 24 4
gpt4 key购买 nike

我有一种情况,我需要找到一个包的调用者,我的代码看起来像:

继承.pm:

package Inherited;
our @ISA = qw(BaseClass);
sub new {
SUPER::new();
}

基类.pm
package BaseClass;
sub new {
$a = caller(0);
print $a
}

现在我有另一个类(MyClass.pm),它可以:
我的类.pm:
$obj = Inherited->new();  

这将打印继承。但我需要 MyClass 作为打印语句。

有人可以帮我解决这个问题吗??

最佳答案

当你给 caller一个论点,你告诉它要返回多少级。你已经给了它参数 0 ,这是当前级别。如果你想上一级,添加 1 :

use v5.12;

package Inherited {
our @ISA = qw(BaseClass);
sub new {
$_[0]->SUPER::new();
}
}

package BaseClass {
sub new {
say "0: ", scalar caller(0);
say "1: ", scalar caller(1);
}
}

package MyClass {
my $obj = Inherited->new;
}

现在的结果是:
0: Inherited
1: MyClass

请记住始终在您的问题中包含完整的示例程序。您发布的 Perl 代码由于与 caller 无关的各种其他原因而损坏。 .

关于Perl 继承 - 谁是父类的调用者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10012160/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com