perl – 确定是否已从基类重写基类子例程
发布时间:2020-12-16 06:07:17 所属栏目:大数据 来源:网络整理
导读:这个问题困扰了我,但我已经解决了问题,并将发布我的答案. 我有一个名为Parent的基类 亲 package Parent;sub new { my $c = shift; my $s = {},bless $s,$c; return $s;}sub who { return "parent";}1; 这个父类暴露了一个方法;谁. 我写了两个孩子课:Child和
这个问题困扰了我,但我已经解决了问题,并将发布我的答案.
我有一个名为Parent的基类 亲 package Parent; sub new { my $c = shift; my $s = {},bless $s,$c; return $s; } sub who { return "parent"; } 1; 这个父类暴露了一个方法;谁. 我写了两个孩子课:Child和Freak.只有孩子才能覆盖谁. 儿童 package Child; use base 'Parent'; sub who { return "child"; } 1; 怪物 package Freak; use base 'Parent'; 1; 基类如何确定是否已重写方法的基础? 我希望能够写出这样的东西 package Parent; sub new { my $c = shift; my $s = {},$c; return $s; } sub who { return "parent"; } sub check { my $self = shift; my $is_overridden = 1; # what conditional should be here? return $is_overridden ? "yes" : "no"; } 1; 我可以使用什么条件来确定子程序是否被覆盖? 解决方法my $is_overridden = $self->can("who") != Parent->can("who"); 请参阅 另外,我应该添加一个更哲学的注释 – 听起来你的重写违反了Liskov Subsitution Principle,重构事物可能会更好,因此重写方法不是你必须在代码中的其他地方调查的东西. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |