2010-08-19 11 views

उत्तर

7

एक समय था जब आयात public डिफ़ॉल्ट रूप से था; अर्थात, जब आप एक और मॉड्यूल आयात करते हैं, तो इसकी सामग्री न केवल आपके मॉड्यूल के भीतर दिखाई देगी बल्कि किसी भी मॉड्यूल से भी दिखाई देगी जो आपके को आपके मॉड्यूल आयात करता है।

आखिरकार, यह बदल दिया गया ताकि वे डिफ़ॉल्ट रूप से private थे।

हालांकि, वहाँ कुछ कारणों से मैन्युअल private निर्दिष्ट करने के लिए है:

  1. आयात public बनाया जा सकता है अगर वे एक public संदर्भ में कर रहे हैं। उदाहरण के लिए:

    public: 
    
    // Lots of stuff 
    
    import blah; // oh no, everyone can see my imports! 
    
  2. डीएमडी आयात से संबंधित कीड़े के साथ teems। उदाहरण के लिए, निजी रूप से निजी होने के बावजूद चुनिंदा आयात डिफ़ॉल्ट रूप से सार्वजनिक होते हैं। यह सभी प्रकार के भयानक दुःस्वप्न परिदृश्यों का कारण बन सकता है जहां प्रतीकों (गलती से) एक मॉड्यूल में सार्वजनिक रूप से आयात किया जाता है, जो कि पूरी तरह से अलग-अलग मॉड्यूल में प्रतीकों को गायब कर देता है और आपके प्रोग्राम को तोड़ देता है।

दूसरे शब्दों में, वे शायद private टैंगो में हैं क्योंकि devs भी इस चीज सही पाने के लिए यह विश्वास करने के लिए लंबे समय के लिए डीएमडी साथ काम किया है।

+0

+1 आह, दाएं, बग ... – stephan

+0

re pt 2 क्या आप डी 2 या डी 1 के बारे में बात कर रहे हैं? –

+0

मैं डी 2 का उपयोग नहीं करता हूं। उस ने कहा, अगर मुझे डी 2 में कोई समस्या नहीं है तो मुझे कुछ आश्चर्य होगा; डीएमडी 1.x और डीएमडी 2.x एक ही स्रोत कोड से बनाए गए हैं, बस अलग-अलग प्री-प्रोसेसर परिभाषित करता है। जहां तक ​​मुझे पता है, आयात 1.x और 2.x के बीच वास्तव में नहीं बदला है। –

4

डी 2.0 में, private importimport के समानार्थी है, public import के विपरीत। डिफ़ॉल्ट रूप से, आयात निजी हैं। Modules documentation

संपादित करें: डिफ़ॉल्ट रूप से, आयात निजी D 1.0 भी हैं।

संबंधित मुद्दे