使用“覆盖”或只是简单地重新定义perl中的子例程
发布时间:2020-12-16 06:25:36 所属栏目:大数据 来源:网络整理
导读:有这个示例代码 – 2个包扩展了Some包并重新定义了func方法. use 5.014;use warnings;package Some { use Moose; use warnings; sub func { say 'func from Some'; }}package Over { use Moose; use warnings; extends 'Some'; override 'func' = sub { say
有这个示例代码 – 2个包扩展了Some包并重新定义了func方法.
use 5.014; use warnings; package Some { use Moose; use warnings; sub func { say 'func from Some'; } } package Over { use Moose; use warnings; extends 'Some'; override 'func' => sub { say 'func from Over'; }; } package Plain { use Moose; use warnings; extends 'Some'; sub func { say 'func from Plain'; }; } #main for my $package ( qw(Some Over Plain) ) { my $instance = $package->new(); $instance->func; } runnig代码给出: func from Some func from Over func from Plain 例如在两种情况下都重新定义了func方法,没有任何警告等. 问题: >这两种方式之间有一些有意义的差异吗? 解决方法
documentation完美地回答了这个问题.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |