有这个示例代码 - 扩展Some包并重新定义func方法的2个包.
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;
}
Run Code Online (Sandbox Code Playgroud)
runnig代码给出:
func from Some
func from Over
func from Plain
Run Code Online (Sandbox Code Playgroud)
例如,func在两种情况下都重新定义了该方法,没有任何警告等.
问题:
override和当平原重新定义?