Perl继承 – 谁是父类的调用者
发布时间:2020-12-16 06:26:02 所属栏目:大数据 来源:网络整理
导读:我有一种情况,我需要找到一个包的调用者,我的代码看起来像: Inherited.pm: package Inherited;our @ISA = qw(BaseClass);sub new { SUPER::new();} BaseClass.pm package BaseClass;sub new { $a = caller(0); print $a} 现在我有另一个类(MyClass.pm),它
我有一种情况,我需要找到一个包的调用者,我的代码看起来像:
Inherited.pm: package Inherited; our @ISA = qw(BaseClass); sub new { SUPER::new(); } BaseClass.pm package BaseClass; sub new { $a = caller(0); print $a } 现在我有另一个类(MyClass.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无关的各种其他原因而被破坏. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |