मुझे पाइथन मेटाक्लास के समान कुछ लागू करने की आवश्यकता है। मेरे मामले में मेटाक्लास का उपयोग करने का लक्ष्य आमतौर पर किसी विशेष बेस क्लास के सभी उप-वर्गों की रजिस्ट्री बनाने के लिए होता है - यानी कक्षा के संदर्भ में वर्ग के स्ट्रिंग प्रस्तुति से मैपिंग होता है। पायथन में बेस क्लास पर मेटाक्लास रखना बहुत सुविधाजनक है ताकि प्रत्येक सबक्लास पर विशेष कुछ भी करने की आवश्यकता न हो। मैं स्कैला में कुछ ऐसा करने की तलाश में हूं। मेटाक्लास को अनुकरण करने का कोई तरीका है, या अन्यथा यह एक अलग तरीका है? धन्यवाद!स्कैला: पायथन में मेटाक्लास के समानता? स्केल में
उत्तर
पाइथन के मेटाक्लास के समान कुछ भी नहीं है। रजिस्ट्री जो आप के बारे में बोलते हैं कस्टम क्लास लोडर या प्रतिबिंब का उपयोग करके संभव हो सकता है।
धन्यवाद - क्या आप किसी वर्ग प्रकार से स्ट्रिंग प्रस्तुति प्राप्त करने के किसी अन्य सामान्य तरीके के बारे में सोच सकते हैं और फिर उस स्ट्रिंग से उस वर्ग की एक नई ऑब्जेक्ट को तुरंत चालू करने में सक्षम हो सकते हैं? –
@ हेनरिक देखें रैंडल का जवाब। एक बार आपके पास 'java.lang.Class' हो, तो आप उस पर' newInstance' कॉल कर सकते हैं। हालांकि, यदि आप किसी वर्ग के सभी उप-वर्गों को ढूंढना चाहते हैं, तो इसके बारे में जावा प्रश्न पूछें। –
आप वर्ग के पूरी तरह से योग्य नाम जानते हैं, तो आप इसे java.lang.Class
में हमेशा की तरह जावा प्रतिबिंब तरीकों का उपयोग कर, अर्थात् Class.forName(String fqClassName)
लोड कर सकते हैं। Class
के परिणामी उदाहरण को देखते हुए, तत्कालता केवल है यदि कोई शून्य-तर्क कन्स्ट्रक्टर है, अन्यथा आप सभी जावा प्रतिबिंब प्रकारों की गन्दा दुनिया में उलझ जाते हैं।
यदि आप एक प्रकार की "खोज" चाहते हैं जहां संकलन समय पर अज्ञात कक्षाएं हैं और जिनके नाम किसी भी तरह से प्रोग्राम के इनपुट या पैरामीटर के रूप में नहीं प्रदान किए जाते हैं, तो क्लासलोडर दृष्टिकोण शायद एकमात्र उत्तर है।
- 1. स्केल समानता प्रकार जांच के साथ?
- 2. पायथन मेटाक्लास और मॉडग्रामर
- 3. मेटाक्लास (जैसे पायथन में) के वास्तविक वास्तविक दुनिया के उपयोग
- 4. संकलन त्रुटियों के साथ स्कैला आईडीई में स्केल एप्लिकेशन चलाएं
- 5. मेटाक्लास
- 6. मेटाक्लास
- 7. मेटाक्लास
- 8. स्केल में ब्रेनफक कंपाइलर
- 9. पायथन: मेटाक्लास सभी तरह से नीचे
- 10. स्केल में मिलान प्रकार
- 11. स्केल में इंट डिवीजन
- 12. स्केल
- 13. स्कैला में Lazy Quicksort
- 14. स्कैला
- 15. ओकैम हैशटेबल्स में समानता
- 16. हास्केल में पॉइंटर समानता?
- 17. स्केल
- 18. समानता के लिए स्कैला फ़ंक्शन मानों की तुलना कैसे करें
- 19. पायथन में समानता विफलता स्ट्रिंग। क्या देता है?
- 20. स्केल
- 21. स्केल
- 22. पाइथन मेटाक्लास बनाम कक्षा सजावट
- 23. स्केल
- 24. स्केल
- 25. पायथन 3: टाइप एरर: मेटाक्लास संघर्ष: व्युत्पन्न वर्ग का मेटाक्लास अपने सभी अड्डों के मेटाक्लास के एक (गैर-सख्त) उप-वर्ग होना चाहिए
- 26. पैरामीटरयुक्त वर्ग और मेटाक्लास (कृपया पायथन में कोड उदाहरण) के बीच क्या अंतर है?
- 27. क्या __metaclass__ पायथन में मेटाक्लास के उपयोग को मजबूर नहीं करना चाहिए?
- 28. स्कैला
- 29. हास्केल monads के बराबर स्केल
- 30. स्कैला में Kadane का एल्गोरिदम
यह स्पष्ट नहीं है कि आप आखिरकार क्या चाहते हैं, लेकिन स्केल में पायथन के मेटाक्लास के बराबर नहीं है। यदि आप स्ट्रिंग से कक्षा प्राप्त करना चाहते हैं, तो आपको कक्षा.forनाम का उपयोग करना चाहिए। –