Some
パッケージを拡張し、func
メソッドを再定義するこのコード例-2のパッケージを作成してください。コードをrunnig"override"を使うか、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;
}
を与える:
func from Some
func from Over
func from Plain
例えばfunc
メソッドは、両方の場合に、警告などを伴わずに再定義されます。
質問:
- は、ここでは二つの方法の間にいくつかの意味の違いがありますか?
override
を使用し、の場合はを再定義する必要がありますか?- これはいくつかの文書で説明されていますか?
再定義されるメソッドはありません。 'Some :: func'、' Over :: func'、 'Plain :: func'という3つの異なるメソッドを定義しています。 – mob
@ mob hm ..そして、正しい用語は何ですか? 'Over'は再定義ではなく' override'ですが、_redefine_が正しくない場合に 'Plain'シナリオを呼び出す方法を前提としていますか? – cajwine