बतख टाइपिंग

From alpha
Jump to navigation Jump to search

कंप्यूटर प्रोग्रामिंग में डक टाइपिंग बतख परीक्षण का एक अनुप्रयोग है- यदि यह डक की तरह चलता है और यह बत्तख की तरह कांपता है, तो यह डक होना चाहिए- यह निर्धारित करने के लिए कि किसी वस्तु (कंप्यूटर विज्ञान) का उपयोग किसी विशेष उद्देश्य के लिए किया जा सकता है या नहीं। नाममात्र के टाइपिंग के साथ, एक वस्तु किसी दिए गए प्रकार की होती है यदि इसे इस तरह घोषित किया जाता है (या यदि वस्तु के साथ एक प्रकार का संबंध वस्तु विरासत जैसे तंत्र के माध्यम से अनुमान लगाया जाता है)। डक टाइपिंग के साथ, एक वस्तु किसी दिए गए प्रकार की होती है यदि उसमें सभी विधि (कंप्यूटर प्रोग्रामिंग) और उस प्रकार के लिए आवश्यक गुण हों।[1][2] डक टाइपिंग को किसी दी गई वस्तु और किसी प्रकार की आवश्यकताओं के बीच उपयोग-आधारित संरचनात्मक तुल्यता के रूप में देखा जा सकता है।

उदाहरण

पायथन (प्रोग्रामिंग लैंग्वेज) 3 में यह सरल उदाहरण दर्शाता है कि किसी भी संदर्भ में किसी भी वस्तु का उपयोग कैसे किया जा सकता है जब तक कि इसका उपयोग इस तरह से नहीं किया जाता है कि यह समर्थन नहीं करता है।

<वाक्यविन्यास लैंग = पायथन लाइन = 1> वर्ग बतख:

   डीईएफ़ तैरना (स्वयं):
       प्रिंट (डक स्विमिंग)
   डेफ फ्लाई (स्वयं):
       प्रिंट (डक फ्लाइंग)

कक्षा व्हेल:

   डीईएफ़ तैरना (स्वयं):
       प्रिंट (व्हेल तैराकी)

[डक (), व्हेल ()] में जानवरों के लिए:

   पशु तैरना ()
   पशु मक्खी ()

</वाक्यविन्यास हाइलाइट>

आउटपुट:

सिंटैक्सहाइलाइट लैंग = आउटपुट> बतख तैरना बत्तख उड़ रही है व्हेल तैरना विशेषता त्रुटि: 'व्हेल' ऑब्जेक्ट में कोई विशेषता नहीं है 'फ्लाई' </वाक्यविन्यास हाइलाइट> यदि यह माना जा सकता है कि जो कुछ भी तैर सकता है वह एक बत्तख है क्योंकि बत्तखें तैर सकती हैं, एक व्हेल को बत्तख माना जा सकता है; हालाँकि, अगर यह भी मान लिया जाए कि एक बत्तख को उड़ने में सक्षम होना चाहिए, तो व्हेल को बत्तख नहीं माना जाएगा।

सांख्यिकीय रूप से टाइप की गई भाषाओं में

कुछ टाइप सिस्टम में#स्टेटिक टाइपिंग|स्टैटिकली-टाइप्ड लैंग्वेजेज जैसे बू (प्रोग्रामिंग भाषा) [3] और D_(प्रोग्रामिंग_भाषा),[4][5] वर्ग प्रकार की जाँच संकलन समय के बजाय रनटाइम पर होने के लिए निर्दिष्ट की जा सकती है।

अन्य प्रकार की प्रणालियों के साथ तुलना

संरचनात्मक प्रकार प्रणाली ्स

डक टाइपिंग समान है, लेकिन स्ट्रक्चरल टाइप सिस्टम से अलग है। स्ट्रक्चरल टाइपिंग एक टाइप सिस्टम#स्टेटिक टाइपिंग सिस्टम है जो एक प्रकार की संरचना द्वारा टाइप संगतता और समानता निर्धारित करता है, जबकि डक टाइपिंग टाइप सिस्टम#डायनेमिक टाइपिंग है और केवल प्रकार की संरचना के उस भाग द्वारा टाइप संगतता निर्धारित करता है जिसे रनटाइम (प्रोग्राम जीवनचक्र) के दौरान एक्सेस किया जाता है अवस्था)।

टाइपप्रति ,[6] एल्म (प्रोग्रामिंग भाषा)[7] और पायथन (प्रोग्रामिंग भाषा)[8] भाषाएँ अलग-अलग डिग्री के लिए संरचनात्मक टाइपिंग का समर्थन करती हैं।

प्रोटोकॉल और इंटरफेस

प्रोटोकॉल (ऑब्जेक्ट उन्मुख प्रोग्रामिंग) स्पष्ट रूप से घोषित करने का एक तरीका प्रदान करता है कि कुछ विधियों, ऑपरेटरों या व्यवहारों को परिभाषित किया जाना चाहिए। यदि कोई तृतीय-पक्ष पुस्तकालय एक वर्ग को लागू करता है जिसे संशोधित नहीं किया जा सकता है, तो क्लाइंट उस पुस्तकालय के लिए अज्ञात इंटरफ़ेस के साथ इसका उदाहरण उपयोग नहीं कर सकता है, भले ही वर्ग इंटरफ़ेस आवश्यकताओं को पूरा करता हो। इस समस्या का एक सामान्य समाधान अनुकूलक पैटर्न है। इसके विपरीत, डक टाइपिंग के साथ, एडॉप्टर की आवश्यकता के बिना ऑब्जेक्ट को सीधे स्वीकार किया जाएगा।

साँचे या सामान्य प्रकार

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

जावा, स्काला और ऑब्जेक्टिव-सी जैसी भाषाओं में, प्रतिबिंब (कंप्यूटर प्रोग्रामिंग) का उपयोग यह जांचने के लिए किया जा सकता है कि ऑब्जेक्ट विधियों को लागू करते हैं या रनटाइम पर आवश्यक तरीके जोड़ते हैं। उदाहरण के लिए, जावा (प्रोग्रामिंग भाषा) के मेथडहैंडल एपीआई का उपयोग इस तरीके से किया जा सकता है।[9]


यह भी देखें

संदर्भ

  1. "Glossary — Python 3.7.1 documentation". docs.python.org. Retrieved 2018-11-08.
  2. "पायथन डक टाइपिंग - उदाहरण". Techie Hours. 2020-06-28. Retrieved 2020-07-26.
  3. Boo: Duck TypingArchived October 6, 2008, at the Wayback Machine
  4. "Dynamic classes and duck typing".
  5. "Metaprogramming - duck typing in D".
  6. "SE Radio Episode 384: Boris Cherny on TypeScript". se-radio.net. Retrieved 2019-10-25.
  7. Czaplicki, Evan. "Core Language · An Introduction to Elm". Retrieved 30 January 2017.
  8. "PEP 544 – Protocols: Structural subtyping (static duck typing)".
  9. "StackOverflow: Implement duck typing using java MethodHandles". Retrieved 13 June 2020.