我发现如果子类添加了触发器,则来自基类的方法修饰符不会运行。这似乎是Moose的一个错误,或者至少是不直观的。以下是我的示例:
如果您运行此示例,则仅运行“this is my_trigger”警告,而“before”修饰符将被忽略。我正在使用Perl 5.14.2和Moose 2.0402。
这是正确的行为吗?这似乎不对,特别是当触发器直接在基类中定义时,触发器将在“before”之后触发。
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”修饰符将被忽略。我正在使用Perl 5.14.2和Moose 2.0402。
这是正确的行为吗?这似乎不对,特别是当触发器直接在基类中定义时,触发器将在“before”之后触发。