- Covariance and contravariance (computer science)
- Many programming language type systems support subtyping. For instance, if the type Cat is a subtype of Animal, then an expression of type Cat should be substitutable wherever an expression of type Animal is used.
यह सामग्री उन लोगों के लिए है जो कंपाइलर डेवलपर हैं, या
जो कंपाइलर के API का उपयोग करते हैं, या
जो कंपाइलर की टाइप सिस्टम का अत्यधिक उपयोग करते हैं।
यह स्वाभाविक रूप से सामना की जाने वाली सामग्री है।
और यह हमारे कोडिंग जीवन में स्वाभाविक रूप से समा गया है।
सरल शब्दों में, जब दो प्रकार के Animal और Dog होते हैं,
यदि Animal में Dog को असाइन किया जाता है, तो यहसहप्रसरण (Covariance)है।
इसके विपरीतयदि Dog में Animal को असाइन किया जाता है, तो यहप्रति-सहप्रसरण (Contravariance)है।
आम तौर पर, Dog में Animal को असाइन नहीं किया जा सकता है।
क्योंकि यह सामान्य लोगों के नजरिए से उचित नहीं है,
इसलिए कंपाइलर डेवलपर इसे ध्यान में रखते हुएकुछ हिस्सोंमें ही प्रति-सहप्रसरण डालते हैं।
आमतौर पर, ऊपर की तरह, फ़ंक्शन के इनपुट मान के लिए प्रति-सहप्रसरण का उपयोग किया जाता है, और आउटपुट मान के लिए सहप्रसरण को बनाए रखा जाता है।
यह प्रति-सहप्रसरण क्यों आवश्यक है?आप सोच सकते हैं।
यह ईवेंट हैंडलिंग जैसे स्थानों पर अधिक लचीलापन और बहुरूपता बनाए रखने में मदद करता है।
वास्तव में, सहप्रसरण के साथ समस्याएँ भी हो सकती हैं।
उपरोक्त कोड में, Dog के स्थान पर Animal डालकर लचीलापन सुनिश्चित किया गया है, और बहुरूपता पर ध्यान दिया जा सकता है।
यदि Animal के बजाय Dog के सबटाइप जैसे Chiwawa डाला जाता है, तो ईवेंट हैंडलर को निष्पादित करते समय, Dog में न होने वाले Chiwawa के विशिष्ट इंटरफ़ेस के कारण त्रुटि उत्पन्न होगी।
वास्तव में, यह फ़ंक्शन निष्पादित करते समय Animal का उपयोग किया जाएगा, इसलिए Animal के सबटाइप को स्वचालित रूप से डाला जाएगा।
यह Animal में Dog के असाइनमेंट जैसा लग सकता है।
इस तरह, प्रति-सहप्रसरण आमतौर पर इनपुट मानों के लिए उपयोग किया जाता है।
वि परिवर्तनशीलता (Invariance), अपरिवर्तनशीलता (Invariance)
संक्षेप में, वि परिवर्तनशीलता सहप्रसरण और प्रति-सहप्रसरण दोनों है, और अपरिवर्तनशीलता दोनों नहीं है।
समाप्त करते हुए
यह सामग्री सरल भी हो सकती है और जटिल भी, इसलिए
इसे स्वयं पढ़ना भी अच्छा विचार हो सकता है।
टिप्पणियाँ0