Ho scoperto che se una sottoclasse aggiunge un trigger, i modificatori di metodo dalla classe base non vengono eseguiti. Questo sembra un bug di Alce, o almeno non intuitivo. Ecco il mio esempio:trigger perl alci in sottoclassi disturbano i modificatori del metodo
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);
Se si esegue questo esempio, solo il "This Is my_trigger" mettere in guardia corre, e il "prima" modificatore viene ignorato. Sto usando Perl 5.14.2 con Moose 2.0402.
È corretto questo comportamento? Non sembra giusto, specialmente dal momento che il trigger si attiva dopo il primo quando il trigger è definito direttamente nella classe base.
Ok, ho aggiunto un bug report qui: https://rt.cpan.org/Public/Bug/Display.html?id=79572. Nel frattempo posso aggirarlo ripetendo il modificatore del metodo nella sottoclasse, suppongo. – rrm1