2011-04-13 9 views
6

मैं Moose व्यंजनों के माध्यम से जा रहा हूं और मैं अभी भी नहीं देख सकता कि क्या मैं इसका उपयोग कर निजी चर और फ़ंक्शन बना सकता हूं? क्या यह संभव है? यदि हां उन्हें मूस के साथ कैसे बनाया जाए?आप मूस का उपयोग करके निजी/सार्वजनिक चर और कार्यों को कैसे बना सकते हैं?

+2

आप यदि चाहें तो एक नज़र MooseX पर गोपनीयता ले जा सकते हैं ::, यह यह पूरा करने के एक विस्तार है। हालांकि, निजी तरीके वास्तव में निजी नहीं हैं क्योंकि वे प्रेषण में छोड़ने के बजाय मर जाएंगे। –

+0

पर्ल जावा नहीं है। – Ether

उत्तर

10

डेक्सिम बिंदुओं की तरह, निजी विधियों में "_" उपसर्ग है। क्योंकि गुण (उदाहरण के चर) उत्पन्न ही टिककर खेल तरीकों (और अगर rw भी तरीकों setters) बॉक्स से बाहर, तो आप इस करना चाहिए:

has 'myvariable' => (
    is  => 'ro', 
    writer => '_myvariable', 
    init_arg => undef, 
    # other options here 
); 

इस तरह आप अपने वर्ग/उदाहरण के भीतर इस विशेषता सेट कर सकते हैं और यह नहीं settable है बाहर से। यदि रीड-ओनली पहुंच बहुत ज्यादा है, आप भी यह चिह्नित कर सकते हैं "निजी":

has '_myvariable' => (
    is  => 'ro', 
    writer => '_set_myvariable' 
    init_arg => undef, 
    # other options here 
); 
10

फ़ंक्शन/चर आदि को चिह्नित करने के लिए _ के साथ एक पहचानकर्ता को उपसर्ग करें। यह स्कोप के दस्तावेज़ में, दस्तावेज़ के मध्य में perlstyle में प्रलेखित है।

यह सैने प्रोग्रामर और कुछ टूल (स्रोत पार्सर्स/दस्तावेज़ीकरण) द्वारा सम्मानित है, लेकिन संकलक द्वारा लागू नहीं किया जाता है। perlmodlib#NOTE देखें।