इस पेज पर, Blockly के मुख्य वर्शन में फ़ंक्शन को कॉल करने और प्रॉपर्टी को ऐक्सेस करने के सबसे सही तरीकों के बारे में बताया गया है. ये सिद्धांत, Blockly के लिए प्लग इन बनाने और Blockly को स्टैंडअलोन ऐप्लिकेशन में इंटिग्रेट करने पर लागू होते हैं.
किसको दिखे
हम TypeScript ऐक्सेस
बदलाव करने वाले टूल का इस्तेमाल करके, मुख्य लाइब्रेरी में दिखने की स्थिति को public
, private
या protected
के तौर पर मार्क करते हैं.
कुछ प्रॉपर्टी के TsDoc टिप्पणियों में, @internal
के साथ एनोटेट किया जा सकता है.
सभी public
और protected
प्रॉपर्टी, Blockly वेबसाइट के रेफ़रंस सेक्शन में दस्तावेज़ के तौर पर मौजूद हैं. कोड पढ़कर भी यह पता लगाया जा सकता है कि वह दिख रहा है या नहीं.
सार्वजनिक
public
के निशान वाली कोई भी चीज़, हमारे सार्वजनिक एपीआई का हिस्सा है. किसी मॉड्यूल में मौजूद ऐसी कोई भी प्रॉपर्टी जिसकी विज़िबिलिटी मॉडिफ़ायर सेटिंग नहीं है उसे सार्वजनिक माना जाता है.
हम अपने सार्वजनिक एपीआई में बार-बार बदलाव नहीं करते. साथ ही, हम बिना किसी वजह और चेतावनी के भी बदलाव नहीं करते. अपवाद: हम किसी एक रिलीज़ में नया एपीआई सार्वजनिक कर सकते हैं और शुरुआती फ़ीडबैक के जवाब में, अगली रिलीज़ में उसमें बदलाव कर सकते हैं. इसके बाद, किसी सार्वजनिक फ़ंक्शन या प्रॉपर्टी को स्थिर माना जा सकता है.
सार्वजनिक फ़ंक्शन को कहीं से भी कॉल किया जा सकता है. साथ ही, जब तक हस्ताक्षर में बदलाव नहीं होता, तब तक सब-क्लास में इन्हें ओवरराइड किया जा सकता है.
सुरक्षित
सुरक्षित फ़ंक्शन और प्रॉपर्टी को सिर्फ़ तय की गई क्लास या किसी सबक्लास से ऐक्सेस किया जा सकता है.
सबक्लास, सुरक्षित फ़ंक्शन और प्रॉपर्टी को बदले बिना, टाइप हस्ताक्षर को बदल सकते हैं.
उदाहरण के लिए, बेस रेंडरर क्लास को एक्सटेंड करने वाला कस्टम रेंडरर, अपनी सुरक्षित प्रॉपर्टी ऐक्सेस कर सकता है.
हर मामले में, आपको यह पक्का करना चाहिए कि आपको यह पता हो कि बाकी कोड में फ़ंक्शन या प्रॉपर्टी का इस्तेमाल कैसे किया जाता है.
निजी
इन्हें सिर्फ़ उसी फ़ाइल में मौजूद कोड से ऐक्सेस किया जा सकता है जिसमें डेफ़िनिशन मौजूद है. इन प्रॉपर्टी को सीधे ऐक्सेस करने पर, गलत तरीके से काम करने की समस्या हो सकती है.
सबक्लास, निजी फ़ंक्शन और प्रॉपर्टी को बदल नहीं सकते.
निजी प्रॉपर्टी में बिना किसी चेतावनी के बदलाव किए जा सकते हैं, क्योंकि इन्हें Blockly के पब्लिक एपीआई का हिस्सा नहीं माना जाता.
Blockly में कुछ फ़ंक्शन के लिए, दिखने की जानकारी वाले एनोटेशन नहीं होते, क्योंकि उन्हें उनके मॉड्यूल से एक्सपोर्ट नहीं किया जाता. ये फ़ंक्शन मुख्य रूप से लोकल वैरिएबल होते हैं और इन्हें उनके तय किए गए मॉड्यूल के बाहर इस्तेमाल नहीं किया जा सकता. इन्हें निजी प्रॉपर्टी के बराबर माना जाना चाहिए.
आंतरिक
इंटरनल फ़ंक्शन और प्रॉपर्टी का इस्तेमाल, मुख्य लाइब्रेरी में किया जाना चाहिए, न कि बाहरी तौर पर. इन्हें TsDoc @internal
के एनोटेशन से दिखाया जाता है.
इंटरनल प्रॉपर्टी में बिना किसी सूचना के बदलाव किए जा सकते हैं, क्योंकि उन्हें Blockly के पब्लिक एपीआई का हिस्सा नहीं माना जाता.
इंटरनल प्रॉपर्टी को कोर में कहीं से भी ऐक्सेस किया जा सकता है. साथ ही, जब तक हस्ताक्षर में बदलाव नहीं होता, तब तक कोर में सबक्लास में इन प्रॉपर्टी को बदला जा सकता है. इन्हें मुख्य लाइब्रेरी के बाहर से ऐक्सेस नहीं किया जा सकता.
बंद किया गया
@deprecated
के निशान वाली किसी भी चीज़ का इस्तेमाल नहीं किया जाना चाहिए. ज़्यादातर मामलों में, इस्तेमाल बंद किए जाने की चेतावनी में, पसंदीदा कोड के बारे में निर्देश शामिल होते हैं. ये निर्देश, कंसोल चेतावनी या TSDoc में दिए जाते हैं.
जहां भी हो सके, बंद किए गए फ़ंक्शन एक चेतावनी लॉग करेंगे. इसमें, मिटाए जाने की तारीख और बदले में इस्तेमाल किए जाने वाले फ़ंक्शन का सुझाव शामिल होगा.
अक्सर पूछे जाने वाले सवाल
Blockly टीम को अक्सर कुछ सवाल पूछे जाते हैं. यहां उनमें से कुछ सवालों के जवाब दिए गए हैं.
अगर मुझे किसी ऐसे फ़ंक्शन का इस्तेमाल करना है जो सार्वजनिक नहीं है, तो क्या होगा?
Blockly के मुख्य वर्शन पर, सुविधा का अनुरोध करें. इस्तेमाल के उदाहरण के बारे में जानकारी दें. साथ ही, यह भी बताएं कि आपको हमें कौनसी जानकारी सार्वजनिक करनी है.
हम इस सुविधा का इस्तेमाल करके, इस बारे में चर्चा करने का अनुरोध करेंगे कि इसे सार्वजनिक किया जाए या नहीं. इसके अलावा, हम यह भी पता लगाएंगे कि क्या आपको यह जानकारी पाने के अन्य तरीके उपलब्ध हैं.
अगर हम इसे सार्वजनिक करने का फ़ैसला लेते हैं, तो आप या Blockly की टीम ज़रूरी बदलाव करेगी. इसके बाद, यह Blockly की अगली रिलीज़ में लाइव हो जाएगा.
अगर आपको किसी प्लग इन में ऐसे सदस्य का इस्तेमाल करना है जो सार्वजनिक नहीं है, तो अपने प्लग इन को बीटा के तौर पर मार्क करें और README
में इसकी जानकारी शामिल करें.
मॉन्की पैचिंग के बारे में क्या?
मंकी पैचिंग के बारे में पढ़ें.
मनकीपैचिंग करना असुरक्षित है, क्योंकि Blockly API के ऐसे हिस्सों का इस्तेमाल करने पर, पैच बिना सूचना के काम करना बंद कर सकते हैं जो सार्वजनिक नहीं हैं. किसी प्लग इन में पैच करना खास तौर पर खतरनाक होता है, क्योंकि आपका कोड उसी कोड को मॉन्कीपैच करने वाले किसी भी दूसरे प्लग इन के साथ खराब तरीके से इंटरैक्ट कर सकता है. इस वजह से, हमारा सुझाव है कि ऐप्लिकेशन और तीसरे पक्ष के प्लग-इन में, मनकीपैचिंग का इस्तेमाल न करें. हम इसे पहले पक्ष के प्लग-इन में स्वीकार नहीं करेंगे.
क्या सार्वजनिक फ़ंक्शन बदले जा सकते हैं?
सबक्लास बनाते समय: हां. अगर ऐसा नहीं है, तो नहीं, यह मॉन्कीपैचिंग है.
क्या सुरक्षित किए गए फ़ंक्शन बदले जा सकते हैं?
सबक्लास बनाते समय: हां. अगर ऐसा नहीं है, तो नहीं, यह मॉन्कीपैचिंग है.
क्या मेरे पास संगठन के अंदर या निजी तौर पर इस्तेमाल किए जाने वाले फ़ंक्शन को बदलने का विकल्प है?
नहीं, यह मॉन्कीपैचिंग है.
प्रॉपर्टी को सीधे कब ऐक्सेस किया जा सकता है? मुझे गटर या सेटर का इस्तेमाल कब करना चाहिए?
अगर हम कोई गेट्टर या सेटर पब्लिश करते हैं, तो कृपया प्रॉपर्टी को सीधे ऐक्सेस करने के बजाय, उसका इस्तेमाल करें. अगर प्रॉपर्टी सार्वजनिक नहीं है, तो ज़रूर ही गेट्टर और सेटर का इस्तेमाल करें.
अगर किसी प्रॉपर्टी में एनोटेशन नहीं है, तो क्या होगा?
यह डिफ़ॉल्ट रूप से सार्वजनिक होता है. हालांकि, अगर आपको इसके लिए कोई Getter/Setter जोड़ना है, तो कृपया हमें बताएं.
अगर किसी फ़ंक्शन में एनोटेशन नहीं है, तो क्या होगा?
यह डिफ़ॉल्ट रूप से सार्वजनिक होता है.
अगर मुझे अब भी पक्के तौर पर नहीं पता है, तो क्या होगा?
फ़ोरम पर सवाल पूछें. हम कुछ दिनों के अंदर आपसे संपर्क करेंगे.