2012-02-03 7 views
5

यार्ड में कई विधियों के साथ दस्तावेज़ बतख प्रकार मुझे विधि पैरामीटर के लिए प्रकार निर्दिष्ट करने और मूल्यों को वापस करने की अनुमति देता है। चूंकि मुझे वास्तव में बतख करना पसंद है, यह देखना अच्छा लगता है कि यार्ड उन तरीकों को निर्दिष्ट करके परिभाषित प्रकारों का भी समर्थन करता है जिन्हें उन्हें समर्थन देना चाहिए।यार्ड

जैसा कि आप here देख सकते हैं,

#first_method, #second_method
जैसे अभिव्यक्तियों को तार्किक विसंगतियों के रूप में व्याख्या किया जाता है। इसका मतलब है कि किसी ऑब्जेक्ट को #first_method या #second_method या दोनों का समर्थन करने की आवश्यकता है। यह वही नहीं है जो मुझे चाहिए।

मैं यह निर्दिष्ट करने में सक्षम होना चाहता हूं कि मेरे पैरामीटर के लिए #first_method और #second_method दोनों का समर्थन करने के लिए किसी ऑब्जेक्ट की आवश्यकता है। क्या यह निर्दिष्ट करने का कोई तरीका है?

उत्तर

6

कोई कंपाउंड बतख-प्रकार इंटरफ़ेस निर्दिष्ट करने के लिए idiomatic वाक्यविन्यास नहीं है। उस ने कहा, ध्यान दें कि सभी प्रकार के विनिर्देश वास्तव में केवल मुक्त-फॉर्म टेक्स्ट हैं; प्रश्न में दिए गए यार्ड प्रकार पार्सर लिंक आम इंटरफेस निर्दिष्ट करने के लिए पारंपरिक या बेवकूफ वाक्यविन्यास का एक सेट है। यदि आप इन प्रकारों को निर्दिष्ट करने के लिए एक स्मार्ट तरीका के बारे में सोचते हैं (और यह आपके उपयोगकर्ताओं को समझ में आता है), तो आप ऐसा करने के लिए स्वतंत्र हैं। शायद #first#second जैसे कुछ काम कर सकते हैं, या #first&#second

मेरी सिफारिश, हालांकि, इस विज्ञापन-प्रसार इंटरफ़ेस को लपेटने के लिए एक ठोस प्रकार बनाना होगा। यहां तक ​​कि यदि आप वास्तव में का उपयोग अपने रनटाइम में करते हैं, तो यह आपके उपयोगकर्ताओं के इंटरफ़ेस को समझाने के लिए आपके डोमेन में ऑब्जेक्ट के रूप में कार्य करेगा। उदाहरण के लिए, class Foo दो विधियों #first और #second के साथ बनाकर, और फिर उन दो विधियों को दस्तावेज करके, अब आप Foo का उपयोग अपने प्रकार के रूप में कर सकते हैं। आप फू क्लास प्रलेखन में समझा सकते हैं कि यह वास्तव में कोड में कभी भी उपयोग नहीं किया जाता है और यदि ऐसा है तो बस "इंटरफ़ेस" के रूप में मौजूद है। कंक्रीट प्रकार की तुलना में आप फू को "मॉड्यूल" भी बता सकते हैं कि यह एक "इंटरफ़ेस" (या "प्रोटोकॉल" है, यदि आप उस भाषा को पसंद करते हैं) से अधिक है।

संबंधित मुद्दे