मुझे पता चला है कि यदि कोई सबक्लास एक ट्रिगर जोड़ता है, तो बेस क्लास से विधि संशोधक नहीं चलते हैं। यह एक मूस बग, या कम से कम गैर अंतर्ज्ञानी की तरह लगता है।उप-वर्गों में 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 है" रन चेतावनी दी है, और "से पहले" संशोधक नजरअंदाज कर दिया है: यहाँ मेरी उदाहरण है। मैं मूस 2.0402 के साथ पर्ल 5.14.2 का उपयोग कर रहा हूँ।
क्या यह सही व्यवहार है? यह सही प्रतीत नहीं होता है, खासतौर से जब ट्रिगर को बेस क्लास में सीधे परिभाषित किया जाता है तो ट्रिगर आग लग जाएगा।
ठीक है, मैंने यहां एक बग रिपोर्ट जोड़ा: https://rt.cpan.org/Public/Bug/Display.html?id=79572। इस बीच मैं उप-वर्ग में विधि संशोधक को दोहराने के द्वारा इसके आसपास काम कर सकता हूं। – rrm1