Moose::Manual::Attributes कहता है:मूस के निर्माता एक स्ट्रिंग मूल्य क्यों लेते हैं?
[डिफ़ॉल्ट के लिए] एक सबरूटीन संदर्भ का उपयोग कर के लिए एक विकल्प के रूप में, आप के बजाय अपनी विशेषता का बिल्डर विधि आपूर्ति कर सकते हैं: ... यह कई फायदे हैं। सबसे पहले, यह कोड के एक हिस्से को अपनी नामित विधि में ले जाता है, जो पठनीयता और कोड संगठन में सुधार करता है।
has attr => ( is => 'ro', builder => 'subroutine' ); sub subroutine { # figure out and return default value }
क्यों इस डिफ़ॉल्ट से अलग हो गया है मैं नहीं मिलता है:
तो, अपनी विशेषता एक डिफ़ॉल्ट thusly निर्धारित कर सकते हैं। क्या आप सिर्फ नामित सबराउटिन का संदर्भ नहीं दे सकते?
has attr => (
is => 'ro',
default => \&subroutine
);
और होगा कि नहीं बेहतर प्रोग्रामिंग अभ्यास, जब से तुम गलती से एक सबरूटीन जो मौजूद नहीं है का उल्लेख नहीं करने के लिए गारंटी रहे हैं हो सकता है? आप एक प्रतीकात्मक संदर्भ के बजाय एक तार्किक संदर्भ के साथ विधि का जिक्र करेंगे।
अच्छा, मुझे पता है कि यह पर्ल भावना में संदर्भ नहीं है; मैं बस सोच रहा था कि बेहतर प्रोग्रामिंग अभ्यास किसी नामित सबराउटिन के वास्तविक संदर्भ को पारित करने के कारणों के लिए होगा। हालांकि, आप सही हैं; बाकी मैनुअल दिखाता है कि जिस तरह से यह वांछनीय है ... – skiphoppy
पैराग्राफ नोट करें जो शुरू होता है "इसमें कई फायदे हैं। पहले ..."; हो सकता है कि यह अगले कुछ हिस्सों को आगे बढ़ाने के लिए आगे बढ़ने में मदद करेगा ताकि अनुच्छेद केवल एक ही लाभ से अधिक प्रदान करता है, जो सोच रहे हैं उनके लिए थोड़ा जल्द। – skiphoppy