Depset

समस्या की शिकायत करें सोर्स देखें Nightly · 8.4 · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

यह एक खास तरह का डेटा स्ट्रक्चर है. यह डेटा को तेज़ी से मर्ज करने की प्रोसेस को सपोर्ट करता है. साथ ही, इसमें डेटा को ट्रैवर्स करने का क्रम तय होता है. आम तौर पर, इसका इस्तेमाल नियमों और पहलुओं में ट्रांज़िटिव डिपेंडेंसी से डेटा इकट्ठा करने के लिए किया जाता है. ज़्यादा जानकारी के लिए, यहां देखें.

किसी depset के एलिमेंट हैश किए जा सकने चाहिए. साथ ही, वे सभी एक ही टाइप के होने चाहिए. जैसे, बिल्ट-इन टाइप(x) फ़ंक्शन से तय किया जाता है. हालांकि, depsets सिर्फ़ हैश सेट नहीं होते और ये सदस्यता की जांच करने की सुविधा के साथ काम नहीं करते. अगर आपको सामान्य सेट डेटाटाइप की ज़रूरत है, तो डिक्शनरी का इस्तेमाल करके इसे सिम्युलेट किया जा सकता है. इसमें सभी कुंजियां True पर मैप होती हैं.

डिपसेट में बदलाव नहीं किया जा सकता. इन्हें इनके कंस्ट्रक्टर फ़ंक्शन का इस्तेमाल करके बनाया जाना चाहिए. साथ ही, transitive आर्ग्युमेंट के ज़रिए, इन्हें अन्य depsets के साथ मर्ज या बढ़ाया जाना चाहिए.

order पैरामीटर से यह तय होता है कि depset को इटरेट किए जा सकने वाले ऑब्जेक्ट में बदलने के लिए, किस तरह का ट्रैवर्सल किया जाता है. इन चार वैल्यू का इस्तेमाल किया जा सकता है:

  • "default" (पहले "stable"): ऑर्डर की जानकारी नहीं दी गई है (लेकिन यह तय है).
  • "postorder" (पहले "compile"): यह बाएं से दाएं क्रम में पोस्ट-ऑर्डरिंग करता है. यह फ़ंक्शन, सभी चाइल्ड एलीमेंट को बाईं ओर से दाईं ओर ले जाता है. इसके बाद, डायरेक्ट एलीमेंट को बाईं ओर से दाईं ओर ले जाता है.
  • "preorder" (पहले "naive_link"): इसमें बाएं से दाएं की ओर प्री-ऑर्डर किया जाता है. यह फ़ंक्शन, सबसे पहले सीधे तौर पर मौजूद एलीमेंट को बाईं ओर से दाईं ओर ले जाता है. इसके बाद, चाइल्ड एलीमेंट को बाईं ओर से दाईं ओर ले जाता है.
  • "topological" (पहले "link"): यह रूट से लेकर लीफ़ तक के नोड को टोपोलॉजिकल क्रम में दिखाता है. इस बात की कोई गारंटी नहीं है कि टेक्स्ट को बाईं से दाईं ओर लिखा जाएगा.

दो depsets को सिर्फ़ तब मर्ज किया जा सकता है, जब दोनों depsets का क्रम एक जैसा हो या उनमें से किसी एक का क्रम "default" हो. दूसरे मामले में, नतीजे के तौर पर मिले डिसेट का क्रम, दूसरे डिसेट के क्रम जैसा ही होगा.

डिपसेट में डुप्लीकेट वैल्यू हो सकती हैं, लेकिन to_list() का इस्तेमाल करके दोहराने पर इन्हें छिपा दिया जाएगा. डुप्लीकेट वैल्यू, क्रम से जुड़ी सिमैंटिक में रुकावट डाल सकती हैं.

सदस्य

to_list

list depset.to_list()

यह फ़ंक्शन, depset के ट्रैवर्सल क्रम में मौजूद एलिमेंट की सूची दिखाता है. इसमें डुप्लीकेट एलिमेंट शामिल नहीं होते. ध्यान दें कि जिन एलिमेंट को डिफ़सेट में एक से ज़्यादा बार जोड़ा गया था उनके लिए, क्रम तय नहीं किया गया है. हालांकि, यह क्रम तय होता है. "default"-ऑर्डर किए गए depsets के लिए भी ऑर्डर तय नहीं किया गया है. साथ ही, उन चाइल्ड depsets के एलिमेंट के लिए भी ऑर्डर तय नहीं किया गया है जिनका ऑर्डर, पैरंट depset से अलग है. यह सूची एक कॉपी है. इसमें बदलाव करने से, depset पर कोई असर नहीं पड़ता. इसी तरह, depset में बदलाव करने से सूची पर कोई असर नहीं पड़ता.