Sunday 15 June 2014

smalltalk - How to write a doubledispatch for the instance creation method? -


उदाहरण निर्माण विधि, जैसे

  className new   < P> कुछ विवरणों के साथ सहायता करने के लिए,  

हम अमूर्त वर्ग में एक = अंकगणितीय विधि लिख सकते हैं,

फिर उपवर्गों में उन्हें दोगुना करें।

क्या हम उस उदाहरण के निर्माण का उपयोग कर सकते हैं?

मैंने नई कोशिश की है लेकिन यह असफल है। कुछ पूर्वनिर्धारित बुनियादी नई विधि की ओर जाता है।

डबल डिस्पैच वास्तव में नहीं है नया केस में समझें डबल डिस्पैच के पीछे का विचार यह है कि आप केवल रिसीवर भेजने के द्वारा सही व्यवहार का निर्धारण नहीं कर सकते। (एकल) तर्क के प्रकार का एक समान प्रभाव है जिस पर व्यवहार को चुना गया है (प्रेषित)। दूसरे शब्दों में, डबल प्रेषण केवल समझ में आता है अगर आपके तरीकों में तर्क है, नया unary होने वाला है, ऐसा नहीं है।

उस ने कहा, आप निश्चित रूप से अपना खुद का नई विधि जो कि स्टॉक डीफ़ॉल्ट को विरासत में मिली है। और आप इसे सभी प्रकार की रोचक बातें कर सकते हैं।

  सार क्लास & gt; & gt; नया ^ स्वयं प्लेटफॉर्म = #unix ifTrue: [सबक्लेशटैटवेअवेनिक्स बेसिक न्यू] अगर फ्ल्स्: [CrappyPCSubclass मूलभूतनहीं: यह किसी भी प्रकार की पर्यावरण जांच करने के लिए सामान्य है। ]   

ध्यान दें कि हम नया के बजाय, यहां मूलभूत नया का उपयोग करते हैं। यदि आपने नया इस्तेमाल किया है, तो आपको उन उपवर्गों में अलग ओवरराइड्स को लागू करने की आवश्यकता होगी, अन्यथा यह सिर्फ AbstractClass & gt; & gt; & gt; नए संदेश को पुन: भेजेंगे।

No comments:

Post a Comment