पर काम करता है मुझे मूस क्लास में क्लास एट्रिब्यूट मिला है, लेकिन मैं इसे माता-पिता के मूल्य को ओवरराइड करने वाले उप-वर्ग के संदर्भ में Class::Data::Inheritable जैसे काम करना चाहता हूं। यही है, subclass माता-पिता के मूल्य को तब तक प्राप्त करता है जब तक कि सेटर को उप-वर्ग पर नहीं बुलाया जाता है, जिस बिंदु पर मान अलग हो जाते हैं। जैसेमूस क्लास एट्रिब्यूट जो क्लास :: डेटा :: इनरिएबल
#!/usr/bin/perl
use warnings;
use strict;
{
package Foo;
use Moose;
use MooseX::ClassAttribute;
class_has Item => (is => 'rw');
}
{
package Bar;
use Moose;
extends 'Foo';
}
Foo->Item(4);
# This prints "4, 4" as expected
#
print join(", ", Foo->Item(), Bar->Item()) . "\n";
Bar->Item(5);
# Would like this to print "4, 5", but it prints "5, 5"
#
print join(", ", Foo->Item(), Bar->Item()) . "\n";
MooseX::ClassAttribute या अन्यथा इस प्रभाव को पाने का सबसे अच्छा तरीका क्या है? किसी भी वर्ग डब्ल्यू/क्लास-डेटा के लिए वांछनीय व्यवहार की तरह लगता है जो विरासत से प्राप्त होने की अपेक्षा करता है।
एफडब्ल्यूआईडब्ल्यू कक्षा :: डेटा :: विरासत मूस के साथ संघर्ष नहीं करता है। – Schwern
श्वार्न: यह सच हो सकता है, हालांकि मूस वस्तुओं को मूस :: ऑब्जेक्ट से उत्तराधिकारी होना है, इसलिए कम से कम वहां कई विरासत शामिल होंगे, जो मुझे परेशान करती हैं। इसके अलावा आपको मूस विशेषता घोषणा घोषणा में से कोई भी नहीं मिलता है कि MooseX :: ClassAttribute आपको देता है। –