उदाहरण के लिए यदि मेरे पास दो अलग-अलग रिकॉर्ड हैं, लेकिन वे कुछ सामान्य क्षेत्रों को साझा करते हैं, तो दोनों रिकॉर्ड एक सामान्य आधार रिकॉर्ड साझा करने का कोई तरीका है? ऐसा लगता है जैसे प्रोटोकॉल केवल विधि हस्ताक्षर घोषित करने की अनुमति देते हैं।क्लोजर में डेटाटाइप विरासत करना संभव है?
उत्तर
मुझे नहीं लगता कि अब तक संभव है।
defrecord
सिर्फ एक मैक्रो है और आप macroexpand
, की तरह कुछ का उपयोग करके जांच कर सकते हैं कि वह क्या करता है: यदि आप इस तरह के रिकॉर्ड विरासत आप शायद ऐसा करने के लिए कोई मैक्रो लागू करने की आवश्यकता चाहते
(macroexpand '(defrecord User [Name Age]))
तो। लेकिन मैं यह सुझाव नहीं दूंगा कि विरासत ऐसा कुछ है जिसे मैं टालने की कोशिश करता हूं क्योंकि इससे जटिलता होती है।
आपको एक अवशोषण के खिलाफ प्रोग्रामिंग होना चाहिए, विशेष फ़ील्ड नहीं, यानी, प्रोटोकॉल का उपयोग करें ताकि रिकॉर्ड एक सामान्य इंटरफ़ेस साझा कर सकें। उदाहरण के लिए, यदि आपके सभी रिकॉर्ड प्रकारों को 'स्ट्रिंग' प्रॉपर्टी वापस करने की आवश्यकता है, तो 'get-string' विधि के साथ प्रोटोकॉल बनाएं और प्रत्येक रिकॉर्ड प्रकार को बढ़ाएं।
(defprotocol SQL
(get-string [t]))
(defrecord Thing [name f1 f2]
SQL
(get-string [t] (str name)))
(defrecord AnotherThing [name f1 f2 f3 f4 blah]
SQL
(get-string [t] (str name)))
यदि आप पाते हैं अपने आप को एक विशेष प्रोटोकॉल विधि आप हमेशा 'defn-' (गैर-सार्वजनिक समारोह) कार्यान्वयन कर सकते हैं के लिए एक ही कार्यान्वयन बनाकर प्रत्येक रिकॉर्ड प्रकार में कार्यान्वयन के रूप में उपयोग।
क्या होगा यदि मैं एक रिकॉर्ड बनाना चाहता हूं जो किसी अन्य रिकॉर्ड के कुछ फ़ील्ड साझा करता हो? जैसे: (defrecord a [ba bc]) (defrecord b [ba bc bd] .. ऐसे मामले को कैसे निपटें? –
- 1. क्या क्लोजर में रिकॉर्ड में फ़ील्ड दस्तावेज करना संभव है?
- 2. क्या एआईडीएल इंटरफेस में विरासत का उपयोग करना संभव है?
- 3. वीबी नेट में एकाधिक विरासत संभव है?
- 4. हास्केल में स्वर डेटाटाइप, क्या यह संभव है?
- 5. क्लोजर में 'आवश्यकता' ओवरराइड करना?
- 6. क्या क्लोजर में परिपत्र संदर्भ बनाना संभव है?
- 7. डेटाटाइप
- 8. जावा में बंदर पैच करना संभव है?
- 9. एक डेटाटाइप में Z3
- 10. क्लोजर में, क्या किसी अज्ञात फ़ंक्शन को अज्ञात फ़ंक्शन के भीतर परिभाषित करना संभव है?
- 11. हस्ताक्षरित डेटाटाइप क्या है?
- 12. हाइबरनेट: क्या बहु-स्तर की विरासत को एकल तालिका में मैप करना संभव है?
- 13. जावा में विरासत विधियों तक पहुंच को छिपाना या कम करना संभव है?
- 14. जावा में एनोटेशन का विस्तार करना क्यों संभव नहीं है?
- 15. क्लोजर कोड व्यवस्थित करना
- 16. LINQ में एक संघ करना संभव है?
- 17. क्या ब्राउज़र में ट्रैसरआउट करना संभव है?
- 18. एमएस एक्सेस में डेटाटाइप को मजबूर करना टेबल क्वेरी
- 19. क्लोजर
- 20. सी # डेटाटाइप को बराबर जावा डेटाटाइप
- 21. क्या PHP में array_shift() का उपयोग करना संभव है और कुंजी प्राप्त करना संभव है?
- 22. विरासत कक्षाओं में फ़ील्ड शुरू करना
- 23. क्या धन पर क्लोजर बहु-तरीकों को अधिभारित करना संभव है?
- 24. क्या क्लोजर से जावा विधियों को फिर से परिभाषित करना संभव है?
- 25. उचित डेटाटाइप
- 26. विरासत के माध्यम से ग्राफिक्स ऑब्जेक्ट्स की कार्यक्षमता का विस्तार करना संभव है?
- 27. क्लोजर
- 28. एमवीसी 3 रेजर: क्या यह एक विरासत एएससीएक्स प्रस्तुत करना संभव है?
- 29. क्या मॉड्यूलर टेम्पलेटिंग और विरासत वीबीस्क्रिप्ट सीटी को अंतःस्थापित करना संभव है?
- 30. सिस्टम। थ्रेडिंग। विरासत विरासत
कि दो संस्थाएं कुछ क्षेत्रों को साझा करती हैं, उनके बीच विरासत संबंध बनाने के लिए वास्तव में पर्याप्त कारण नहीं है। शायद कुछ उदाहरण उपयोग परिदृश्य प्रदान करते हैं। –
उदाहरण के लिए, मैं पार्स किए गए SQL-query का प्रतिनिधित्व करने के लिए रिकॉर्ड का उपयोग कर रहा हूं। तो मेरे पास चयन, अद्यतन, INSERT, आदि के लिए रिकॉर्ड हैं .. वे कुछ सामान्य गुणों को साझा करते हैं, जैसे 'स्ट्रिंग' संपत्ति। जब मैं पॉलिमॉर्फिक कार्यों का उपयोग करके उनके साथ काम करता हूं, तो मैं सुनिश्चित करना चाहता हूं कि उनके पास कुछ सामान्य गुण हैं। – Chris
रिकॉर्ड्स केवल फैंसी मैप्स हैं, इसलिए मैं स्पष्ट नहीं हूं कि इसका अर्थ यह है कि "सभी के पास कुछ सामान्य गुण हैं"। आप केवल '(: स्ट्रिंग ए-रिकॉर्ड) क्यों नहीं कॉल कर सकते हैं? साथ ही, रिकॉर्ड के कुंजियों का सेट उन व्यवहारों से अलग मुद्दा हो सकता है जो ठोस प्रकार व्यक्त कर सकते हैं। आप हल करने की कोशिश कर रहे वास्तविक समस्या क्या है? –