2010-08-01 14 views
7

मैं गतिशील टाइपिंग के लिए उपयोग किया जाता है जिसका अर्थ है कि रनटाइम पर ऑब्जेक्ट/गैर ऑब्जेक्ट ओरिएंटेड स्ट्रक्चर की प्रकार की जानकारी की जांच करना और किसी प्रकार की प्रकार की त्रुटि फेंकना, यानी अगर यह बतख की तरह बतख करता है तो यह एक बतख होता है। क्या गतिशील टाइपिंग का एक अलग प्रकार है (कृपया विवरण में जाएं)।बतख टाइपिंग के बिना गतिशील टाइपिंग?

उत्तर

1

नहीं, गतिशील टाइपिंग तब होती है जब मानों का प्रकार होता है लेकिन चर नहीं होते हैं, इसलिए अधिकांश प्रकार की जांच रनटाइम पर की जाती है। तो, मूल रूप से, यदि मूल्य एक बतख की तरह चलता है या quacks, यह एक बतख है, अन्यथा एक त्रुटि फेंक दिया जाता है। बतख टाइपिंग वास्तव में गतिशील टाइपिंग की एक विशेषता का वर्णन करती है जो सुनिश्चित करता है कि यह टाइपएफ़ होगा (यानी एक विधि केवल तभी चलती है जब परिवर्तनीय foo 'सही विशेषता है या उस विधि को निष्पादित कर सकता है)।

+4

यह गलत है। यह प्रकार की जांच नहीं करता है, केवल यह कि कुछ ऑपरेटर एक्स कर सकता है या कुछ विशेषता वाई है। यदि आप एक चर पर कॉल करने के लिए कहते हैं, तो कहें, तो यह एक ऑब्जेक्ट है और यह एक toString() विधि लागू करता है , तो इसे बुलाया जाएगा, अन्यथा, आपको एक त्रुटि मिल जाएगी। लेकिन कई प्रकार इस आवश्यकता को पूरा कर सकते हैं। – siride

+0

अच्छा बिंदु, मैं एक संपादन कर दूंगा –

5

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

उदाहरण के लिए, यदि आप PHP में प्रोग्राम किए हैं और ओओ का उपयोग किये बिना मूल प्रकारों तक सीमित हैं, तो आप बतख-टाइपिंग का उपयोग किये बिना गतिशील टाइपिंग का उपयोग करेंगे।

+0

क्या आप अपना उदाहरण विस्तृत कर सकते हैं? क्या आप बस यह कह रहे हैं कि रनटाइम पर टाइपिंग डायनामिक टाइपिंग है, जबकि ऑब्जेक्ट्स के गुणों और गुणों के अस्तित्व के परीक्षण के आधार पर जांच को बतख टाइपिंग कहा जाता है? यानी, क्या आप कहेंगे कि दोनों के बीच का अंतर * ऑब्जेक्ट * के साथ करना है? दोनों मामलों में (गैर-बतख गतिशील और बतख टाइपिंग), यह रनटाइम पर इनपुट मानों की जांच के साथ कुछ संचालन (विधि कॉल, जोड़, इत्यादि) की संगतता की तरह दिखता है; क्या वह सही है? केवल अंतर यह है कि बतख टाइपिंग वस्तुओं से संबंधित है, और गतिशील टाइपिंग अधिक सामान्य है, है ना? – EOL

+1

@EOL: हां, टाइपिंग जांच गतिशील टाइपिंग है (जिसे वास्तव में 'डायनामिक चेकिंग' कहा जाना चाहिए, संपत्ति अस्तित्व की जांच करना बतख टाइपिंग है। 'ऑब्जेक्ट्स चिंताओं' की बात यह कहना थोड़ा अस्पष्ट है कि यह सही है, लेकिन मुझे लगता है कि हम दोनों एक ही पृष्ठ पर हैं। –

+0

धन्यवाद! अब मैं दोनों के बीच भेद बेहतर दिखता हूं। – EOL

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