サブクラスがトリガーを追加すると、基本クラスのメソッド修飾子が実行されないことがわかりました。これは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);
この例を実行すると、「this is my_trigger」警告のみが実行され、「before」修飾子は無視されます。私はMoose2.0402でPerl5.14.2を使用しています。
これは正しい動作ですか?特に、トリガーが基本クラスで直接定義されている場合、トリガーは前の後に起動するため、正しくないようです。