He encontrado que si una subclase agrega un activador, entonces los modificadores de método de la clase base no se ejecutan. Esto parece un error de Moose, o al menos no intuitivo. Aquí está mi ejemplo:activadores de perl alce en subclases modificadores de método de interrupción
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);
Si ejecuta este ejemplo, sólo el "esto se my_trigger", advierten carreras, mientras que el "antes" se ignora modificador. Estoy usando Perl 5.14.2 con Moose 2.0402.
¿Este comportamiento es correcto? No parece correcto, especialmente porque el disparador disparará después del anterior cuando el disparador se define directamente en la clase base.
Ok, agregué un informe de error aquí: https://rt.cpan.org/Public/Bug/Display.html?id=79572. Mientras tanto, puedo evitarlo repitiendo el modificador de método en la subclase, supongo. – rrm1