5
サブクラスがトリガーを追加すると、基本クラスのメソッド修飾子が実行されないことがわかりました。これはムースバグ、または少なくとも直感的ではないようです。ここに私の例です:サブクラスのperl mooseトリガーがメソッド修飾子を中断する
package Foo {
use Moose;
has 'foo' => (
is => 'rw',
isa => 'Str',
);
before 'foo' => sub {
warn "before foo";
};
};
package FooChild {
use Moose;
extends 'Foo';
has '+foo' => (trigger => \&my_trigger,);
sub my_trigger {
warn 'this is my_trigger';
}
};
my $fc = FooChild->new();
$fc->foo(10);
あなたはこの例を実行する場合は、唯一の「これはmy_triggerです」実行を警告し、修飾子は無視され、「前に」。私はMoose 2.0402でPerl 5.14.2を使用しています。
この動作は正しいですか?トリガがベースクラスに直接定義されている場合、トリガは前のトリガの後に起動するため、特にそうは思われません。
[OK]を、私はここにバグレポートを追加:https://rt.cpan.org/Public/Bug/Display.html?id=79572。その間、私はそれを回避するために、私が想定しているサブクラスでメソッド修飾子を繰り返すことができます。 – rrm1