कि बस जोड़ने बाहर कर देता है कक्षा में MooseX::Clone
भूमिका clone()
विधि प्रदान करती है जो पुनरावर्ती गुणों को क्लोन करती है।
- हैशफ/सररेफ विशेषताओं के लिए, यह संरचनाओं की प्रतिलिपि बनाता है।
- स्केलर्स (संदर्भ सहित) के लिए यह संदर्भ की एक उथली प्रतिलिपि करता है।
- यदि आप विशेषता में
traits => ['Clone']
जोड़ते हैं, तो यह विशेषता मान पर clone()
पर कॉल करके विशेषता को पुन: क्रमबद्ध कर देगा।
Set::Object
क्लोनिंग का समर्थन करने के लिए, मैं एक विशेषता Clone
विशेषता उपवर्गीकरण द्वारा CloneByCoercion
बुलाया बना दी, प्रकार के साथ पैरामिट्रीकृत क्लोनिंग से पहले से/मजबूर करने के लिए।
तो यह उपयोग करने के लिए, मैं ने लिखा है:
has 'blah' => (isa => 'Set::Object', is => rw,
traits => ['CloneByCoercion' => {to=>'ArrayRef'}]
);
MooseX::Types::Set::Object
करने और ArrayRef से coercions प्रदान करता है (हालांकि मैं इसे में एक बग पैच करने के लिए की जरूरत: ArrayRef को बलात्कार के लिए एक संदर्भ, नहीं एक सूची प्रदान करना चाहिए)
मैंने ऑब्जेक्ट-देखा हैश रखने के लिए भी संशोधित किया है, ताकि यह परिपत्र संदर्भों के साथ अंतःस्थापित ऑब्जेक्ट संरचनाओं को क्लोनिंग का समर्थन करता है।
मैं अंततः इस सामान को सीपीएएन पर डालने या मॉड्यूल में पैच सबमिट करने के लिए मिल जाएगा।
मुझे लगता है कि आपको सेट :: ऑब्जेक्ट विशेषता पर 'StorableClone' विशेषता का उपयोग करने की आवश्यकता है; जो स्वचालित रूप से उस पर 'dclone' का उपयोग करना चाहिए। (StorableClone MooseX :: क्लोन का हिस्सा है।) – cjm