neu definieren Haben Sie diesen Beispielcode - 2 Pakete, die das Some
Paket erweitert und die func
Methode neu definiert.Mit "override" oder einfach nur die Unterroutine in Perl
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;
}
den Code Tagrunnig gibt:
func from Some
func from Over
func from Plain
z.B. Die Methode func
wird in beiden Fällen ohne Warnung oder dergleichen neu definiert.
Die Fragen:
- sind hier einige bedeutsame Unterschiede zwischen den beiden Möglichkeiten?
- wenn ich die
override
verwenden sollte und wenn die plain neu definieren? - wird dies in einigen doc diskutiert?
Keine Methoden werden neu definiert. Sie definieren drei verschiedene Methoden 'Some :: func',' Over :: func' und 'Plain :: func'. – mob
@mob hm .. und was die richtige Terminologie? Angenommen, dass für das "Over" ist "Override" anstelle der Neudefinieren, aber wie das 'Plain' Szenario zu nennen, wenn das _redefine_ nicht korrekt ist? – cajwine