मैंने कहीं पढ़ा है कि उच्च ऑर्डर पॉलीमोर्फिज्म का उपयोग टाइप सिस्टम में (.NET की तरह) के साथ नहीं किया जा सकता है। क्या यह सही है और क्यों?उच्च ऑर्डर पॉलीमोर्फिज्म + वैल्यू टाइप
उत्तर
समस्या के साथ है मूल्य प्रतिनिधित्व।
पारंपरिक उच्च-आदेश पॉलीमोर्फिज्म भाषाओं ने सरलीकृत विकल्प बना दिया है कि सभी मानों को एक समान तरीके से दर्शाया जाता है, आमतौर पर एक शब्द, कुछ चालाक टैगिंग के साथ यह संकेत मिलता है कि यह एक तत्काल पूर्णांक है या एक सामान्य के साथ संरचना के लिए सूचक है डेटा संरचनाओं या कार्यों जैसे अन्य सभी मूल्यों के लिए प्रतिनिधित्व (कुछ टैग, आदि)।
यदि आपके पास यह धारणा है, तो आप प्रत्येक पॉलिमॉर्फिक फ़ंक्शन को एक बार संकलित कर सकते हैं, और इसे सभी प्रकार के सभी तर्कों पर उपयोग कर सकते हैं: उनके पास संकलित फ़ंक्शन द्वारा प्रस्तुत प्रतिनिधित्व है।
अब कहें कि आप अन्य प्रस्तुतियों के साथ प्रकार फेंकते हैं, उदाहरण के लिए। ढेर पर कई निरंतर शब्द। आप अब अपने एकल संकलित फ़ंक्शन का उपयोग नहीं कर सकते हैं, क्योंकि यह एक शब्द की अपेक्षा करेगा, इसलिए कॉलिंग सम्मेलन सही नहीं है। कुछ टूटा है।
इस तरह के रूप में विभिन्न तरीकों से ठीक किया जा सकता:
उनका प्रतिनिधित्व बारे में कुछ जानकारी मानों के साथपास (आप क्रम के एक प्रकार के "प्रकार" जानकारी होने के लिए इस जानकारी का विचार कर सकते हैं, लेकिन वास्तव में आपको पूर्ण प्रकार की जानकारी की आवश्यकता नहीं है, केवल प्रतिनिधित्व के बारे में कुछ जानकारी); उदाहरण के लिए TILT कंपाइलर ने उदाहरण के लिए
प्रत्येक संभावित प्रतिनिधित्व के लिए अपने पॉलीमोर्फिक फ़ंक्शन के कई विशेष संस्करणों को संकलित करने का प्रयास करें, फिर निर्णय लें (प्रकार के टैग पर आधारित, या कुछ स्थिर रूप से उपलब्ध जानकारी) जो संस्करण बुलाना। यह एमएलटन के रूप में एक संपूर्ण कार्यक्रम अनुकूलन योजना के साथ उचित हो सकता है। यह पहले विचार के कॉलर-पसंद (कैली-पसंद के बजाय) संस्करण कम या कम है।
"एक-शब्द प्रकार", "टुपल प्रकार" को अलग करने के लिए एक प्रकार की प्रणाली का उपयोग करके बहुरूपता प्रतिबंधित करें। सामान्य polymorphism के बजाय "के लिए सभी टाइप करें," आपके पास इस प्रकार के सभी प्रकार के लिए एक सापेक्ष संस्करण होगा "...। यह प्रोग्रामर को स्थिर रूप से तर्क देने की अनुमति देता है कि कौन सा फ़ंक्शन स्वीकार कर सकता है कि किस प्रकार के तर्क ("ओउ, यह फ़ंक्शन पॉलिमॉर्फिक है, इसलिए मुझे यहां मेरे मूल्य प्रकार को बॉक्स करना होगा") यह उम्मीद करने के बजाय कि कंपाइलर को सही दबाव मिलेगा, लेकिन यह भी प्रकार प्रणाली को भारी बनाता है: आप एकरूपता के भ्रम को सुरक्षित नहीं करते हैं।
संक्षेप में, संयुक्त अमीर डेटा प्रतिनिधित्व विकल्पों के साथ बहुरूपता (के कुछ फार्म) संभव है, लेकिन वर्दी प्रतिनिधित्व के मामले में तुलना में बहुत कठिन है।
नहीं, यह गलत है। आप "उच्च क्रम बहुरूपता" (पैरामीटर जो सभी प्रकारों पर समान रूप से व्यवहार करते हैं) प्राप्त कर सकते हैं या तो पैरामीटर प्रकार या तो object
टाइप करें (मूल्य प्रकार स्वचालित रूप से ऑब्जेक्ट्स में "बॉक्स किए गए" हो जाएंगे)
- 1. टाइपस्क्रिप्ट - उच्च ऑर्डर फ़ंक्शन प्रकार
- 2. सी-जैसी भाषाओं में रिटर्न टाइप पॉलीमोर्फिज्म
- 3. उच्च ऑर्डर फ़ंक्शन का प्रकार
- 4. अंतर कैसे टाइप करें वैल्यू टाइप या रेफरस टाइप?
- 5. हाइबरनेट पॉलीमोर्फिज्म
- 6. कंपाइलर वैल्यू टाइप रेज़ोल्यूशन और हार्डकोडेड "0" इंटेगर वैल्यू
- 7. वैल्यू टाइप वीएस रेफरेंस टाइप - ऑब्जेक्ट क्लास सी #
- 8. टाइप करके सूची कैसे ऑर्डर करें?
- 9. फ़ंक्शन पैरामीटर द्वारा पॉलीमोर्फिज्म
- 10. ऑब्जेक्ट्स और पॉलीमोर्फिज्म
- 11. डिज़ाइन प्रश्न: जावास्क्रिप्ट में पॉलीमोर्फिज्म
- 12. पास-बाय-वैल्यू
- 13. वैल्यू टाइप, स्ट्रिंग्स और वैल्यू टाइप्स के नलबल के लिए जेनेरिक बाधा
- 14. नल पॉइंटर्स से बचें और पॉलीमोर्फिज्म को
- 15. ऑरैकल पर हाइबरनेट अनुक्रम, @ जेनरेटेड वैल्यू (रणनीति = जेनरेशन टाइप। ऑटो)
- 16. एंटिटी फ्रेमवर्क सीएफ स्टोर 'ऑब्जेक्ट टाइप' वैल्यू कर सकते हैं?
- 17. टाइप() - सिंटैक्स की तरह मैं टाइप * पॉइंटर को वैल्यू-स्टार्ट कैसे करूं?
- 18. डेटा सदस्यों के लिए संकलन-समय पॉलीमोर्फिज्म
- 19. पर्ल पॉलीमोर्फिज्म कैसे काम करता है?
- 20. रूबी में उच्च आदेश इटरेटर?
- 21. उच्च kinded जेनरिक
- 22. ऑर्डर द्वारा ऑर्डर और LIMIT
- 23. जीएलएसएल में दूसरा ऑर्डर फ़ंक्शन?
- 24. उच्च उपलब्धता
- 25. उच्च-थ्रूपुट
- 26. उच्च प्रदर्शन
- 27. इंट वैल्यू
- 28. जेड-वैल्यू
- 29. पॉइंट वैल्यू
- 30. एनम वैल्यू
पॉलिमॉर्फिक रिकर्सन के साथ वैल्यू प्रकार समाधान # 2 के लिए समस्याग्रस्त है क्योंकि आपको कोड के असीमित कई संस्करणों को संकलित करने की आवश्यकता हो सकती है। ऐसे मामलों का पता लगाना संभव हो सकता है? – Jules
प्रैक्टिस में आप वैसे भी रिकर्सिव कॉल के कारण आकार में असंबद्ध होने वाले मूल्य प्रकारों के साथ अपना स्टैक भरना नहीं चाहेंगे।मेरा अंतर्ज्ञान यह होगा कि कम से कम एक सूचक के माध्यम से आकार (और ऊपर मुक्केबाजी) पर मजबूती से एक स्थिर सीमा डालने या कम से कम एक सूचक के माध्यम से मजबूर करने के लिए मजबूर करना आपके मामलों में पूर्ण जेआईटी जोड़ने से अधिक उचित समाधान दोनों है। – gasche