Avatar ·

Swift में `open` कीवर्ड का क्या अर्थ है और यह `public` से कैसे अलग है?

सभी को नमस्ते! मैंने हाल ही में Swift सीखना शुरू किया है और मुझे एक्सेस मॉडिफायर को लेकर भ्रम हो गया है। डॉक्यूमेंटेशन में मैंने `public`, `internal`, `fileprivate` और `private` के बारे में पढ़ा, लेकिन फिर मुझे `open` मिला। मैं समझता हूँ कि `public` क्लास या method को दूसरे module से एक्सेस करने योग्य बनाता है। लेकिन फिर `open` की आवश्यकता क्यों है? क्या `public` भी वही नहीं करता? यहाँ एक उदाहरण है: मैंने अपना खुद का framework बनाया और चाहता हूँ कि उपयोगकर्ता न केवल मेरी क्लास का उपयोग करें बल्कि उससे इनहेरिट भी कर सकें। अगर मैं `public` लगाता हूँ, तो क्लास दिखाई देगी, लेकिन compiler उससे इनहेरिट करने की अनुमति नहीं देगा। अगर मैं `open` लगाता हूँ, तो इनहेरिटेंस की अनुमति है। ऐसा क्यों? मुझे यह भी भ्रमित करता है कि `open` केवल क्लासेस और क्लास के members पर लागू किया जा सकता है। जहाँ तक मैं समझता हूँ, structures और protocols के लिए `open` का उपयोग नहीं किया जाता। क्या यह सही है? और एक और सवाल: अगर मैं एक सामान्य एप्लिकेशन (framework नहीं) लिख रहा हूँ, तो क्या मुझे `open` का उपयोग करने की आवश्यकता है? या `public` पर्याप्त है? उदाहरणों के साथ स्पष्टीकरण के लिए आभारी रहूँगा, क्योंकि आधिकारिक डॉक्यूमेंटेशन में...