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」警告運行時,與「前」修改器被忽略。我使用Perl 5.14.2和Moose 2.0402。
這是正確的行爲?這看起來不正確,尤其是因爲觸發器會在之前直接在基類中定義觸發器之後觸發。
好的,我在這裏添加了一個錯誤報告:https://rt.cpan.org/Public/Bug/Display.html?id = 79572。與此同時,我可以通過重複子類中的方法修飾符來解決這個問題。 – rrm1