जेनेरिक फ़ंक्शन: Difference between revisions

From Vigyanwiki
m (Deepak moved page सामान्य कार्य to सामान्य फंक्शन without leaving a redirect)
No edit summary
 
(7 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{Distinguish|Generalized function}}
{{Distinguish|सामान्यीकृत फ़ंक्शन}}


[[कंप्यूटर प्रोग्रामिंग]] में, एक सामान्य फ़ंक्शन [[बहुरूपता (कंप्यूटर विज्ञान)]] के लिए परिभाषित एक फ़ंक्शन है।
[[कंप्यूटर प्रोग्रामिंग]] में, '''जेनेरिक फ़ंक्शन''' (फंक्शन) ऐसा फ़ंक्शन होता है जो [[बहुरूपता (कंप्यूटर विज्ञान)|पॉलीमॉरफिस्म]] (बहुरूपता) के लिए परिभाषित होता है।  


== स्थिर रूप से टाइप की गई भाषाओं में ==
== स्थैतिक रूप से टाइप की गई भाषाओं में ==
स्थिर रूप से टाइप की गई भाषाओं (जैसे [[सी++]] और [[जावा (प्रोग्रामिंग भाषा)]]) में, जेनेरिक फ़ंक्शंस शब्द संकलन-समय बहुरूपता ([[स्थैतिक प्रेषण]]), विशेष रूप से [[पैरामीट्रिक बहुरूपता]] के लिए एक तंत्र को संदर्भित करता है। ये [[टाइप पैरामीटर]]्स के साथ परिभाषित फ़ंक्शन हैं, जिनका उद्देश्य [[संकलन समय]] प्रकार की जानकारी के साथ हल करना है। कंपाइलर इन प्रकारों का उपयोग उपयुक्त संस्करणों को इंस्टेंट करने के लिए करता है, किसी भी [[फ़ंक्शन ओवरलोडिंग]] को उचित रूप से हल करता है।
स्थैतिक रूप से टाइप भाषाओं (जैसे [[सी++]] और [[जावा (प्रोग्रामिंग भाषा)|जावा]]) में, ''जेनेरिक फ़ंक्शन'' शब्द का उपयोग ''कॉंपाइल टाइम पॉलीमॉरफिस्म'' ([[स्थैतिक प्रेषण|स्थैतिक डिस्पैच]]), विशेष रूप से [[पैरामीट्रिक बहुरूपता|पैरामीट्रिक पॉलीमॉरफिस्म]] के लिए एक प्रक्रिया (मेकेनिज़्म) को संदर्भित करता है। ये [[टाइप पैरामीटर|टाइप पैरामीटर्स]] के साथ परिभाषित फ़ंक्शन होते हैं, जिन्हें [[संकलन समय|कॉंपाइल टाइम]] टाइप इनफार्मेशन के साथ हल किया जाना चाहिए। कंपाइलर किसी भी फ़ंक्शन ओवरलोडिंग को उचित रूप से हल करते हुए, उपयुक्त संस्करणों को शीघ्र प्रचलित के लिए इन टाइप्स का उपयोग करता है।


== [[सामान्य लिस्प ऑब्जेक्ट सिस्टम]] में ==
== सामान्य लिस्प ऑब्जेक्ट सिस्टम में ==
[[ ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग ]] के लिए कुछ प्रणालियों में जैसे कि कॉमन लिस्प ऑब्जेक्ट सिस्टम (सीएलओएस)<ref>[http://www.dreamsongs.com/Files/ECOOP.pdf The Common Lisp Object System: An Overview]</ref> और [[डायलन (प्रोग्रामिंग भाषा)]], एक सामान्य फ़ंक्शन एक ऐसी इकाई है जो समान नाम वाली सभी विधियों से बनी होती है। आम तौर पर एक सामान्य फ़ंक्शन एक वर्ग का एक उदाहरण होता है जो फ़ंक्शन और मानक-ऑब्जेक्ट दोनों से विरासत (ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग) प्राप्त करता है। इस प्रकार सामान्य फ़ंक्शंस फ़ंक्शंस (जिन्हें तर्कों के साथ बुलाया और लागू किया जा सकता है) और सामान्य ऑब्जेक्ट दोनों हैं। [[मेटाऑब्जेक्ट प्रोटोकॉल की कला]] पुस्तक में सीएलओएस सामान्य कार्यों के कार्यान्वयन और उपयोग के बारे में विस्तार से बताया गया है।
कुछ [[ ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग |ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग]] सिस्टम में, जैसे कि [[सामान्य लिस्प ऑब्जेक्ट सिस्टम|कॉमन लिस्प ऑब्जेक्ट सिस्टम]] (सीएलओएस)<ref>[http://www.dreamsongs.com/Files/ECOOP.pdf The Common Lisp Object System: An Overview]</ref> और [[डायलन (प्रोग्रामिंग भाषा)|डायलन]], जेनेरिक फ़ंक्शन एंटिटी होता है जिसमें सभी ऐसे नाम वाले मेथड्स सम्मिलित होते हैं। सामान्यतः जेनेरिक फ़ंक्शन एक क्लास का एक उदाहरण होता है जो फ़ंक्शन और स्टैण्डर्ड-ऑब्जेक्ट दोनों से प्राप्त होता है। इस प्रकार, ''जेनेरिक फ़ंक्शन'', ''फ़ंक्शन'' (जिन्हें आर्ग्यूमेंट्स के साथ कॉल और लागू किया जा सकता है) और ''स्टैंडर्ड-ऑब्जेक्ट्स'' होते हैं। मेटाऑब्जेक्ट प्रोटोकॉल की किताब "[[मेटाऑब्जेक्ट प्रोटोकॉल की कला|द आर्ट ऑफ़ द मेटाओबजेक्ट प्रोटोकॉल]]" विस्तार से सीएलओएस जेनेरिक फ़ंक्शन के अंतर्गत कार्यान्वयन और उपयोग की व्याख्या करती है।


लिस्प के शुरुआती ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग एक्सटेंशन में से एक फ्लेवर्स (प्रोग्रामिंग भाषा) है। इसमें स्मॉलटॉक से प्रभावित सामान्य संदेश भेजने वाले प्रतिमान का उपयोग किया गया। संदेश भेजने के लिए फ्लेवर्स सिंटैक्स है:
लिस्प के शुरुआती ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग एक्सटेंशन में से एक फ्लेवर्स है। इसमें स्मॉलटॉक से प्रभावित सामान्य मैसेज भेजने की परियोजना का उपयोग किया गया। मैसेज भेजने के लिए फ्लेवर्स सिंटैक्स निम्नलिखित है:


<syntaxhighlight lang="lisp">
<syntaxhighlight lang="lisp">
  (send object :message)
  (send object :message)
</syntaxhighlight>
</syntaxhighlight>
नए फ्लेवर्स के साथ, यह निर्णय लिया गया कि संदेश एक वास्तविक फ़ंक्शन होना चाहिए और सामान्य फ़ंक्शन कॉलिंग सिंटैक्स का उपयोग किया जाना चाहिए:
नए फ्लेवर्स के साथ, यह निर्णय लिया गया कि मैसेज एक वास्तविक फ़ंक्शन होना चाहिए और सामान्य फ़ंक्शन कॉलिंग सिंटैक्स का उपयोग किया जाना चाहिए:


<syntaxhighlight lang="lisp">
<syntaxhighlight lang="lisp">
  (message object)
  (message object)
</syntaxhighlight>
</syntaxhighlight>
संदेश अब एक सामान्य फ़ंक्शन, एक ऑब्जेक्ट और फ़ंक्शन अपने आप में है। संदेश के व्यक्तिगत कार्यान्वयन को विधियाँ कहा जाता है।
''मैसेज'' अब स्वयं में एक ''जेनेरिक फ़ंक्शन'', ऑब्जेक्ट और फ़ंक्शन होता है। ''मैसेज'' के भिन्न-भिन्न कार्यान्वयन को ''मेथड्स'' कहा जाता है।


[[कॉमनलूप्स]] में भी यही विचार लागू किया गया था।<ref>{{Cite web |url=http://www2.parc.com/istl/groups/gir/papers/stefik-commonloops-oopsla66.pdf |title=कॉमनलूप्स, लिस्प और ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग को मर्ज करना|access-date=2009-12-10 |archive-url=https://web.archive.org/web/20110604013117/http://www2.parc.com/istl/groups/gir/papers/stefik-commonloops-oopsla66.pdf |archive-date=2011-06-04 |url-status=dead }}</ref> कॉमन लिस्प ऑब्जेक्ट सिस्टम के लिए नए फ्लेवर और कॉमनलूप्स मुख्य प्रभाव थे।
[[कॉमनलूप्स]] में भी यही विचार लागू किया गया था।<ref>{{Cite web |url=http://www2.parc.com/istl/groups/gir/papers/stefik-commonloops-oopsla66.pdf |title=कॉमनलूप्स, लिस्प और ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग को मर्ज करना|access-date=2009-12-10 |archive-url=https://web.archive.org/web/20110604013117/http://www2.parc.com/istl/groups/gir/papers/stefik-commonloops-oopsla66.pdf |archive-date=2011-06-04 |url-status=dead }}</ref> कॉमन लिस्प ऑब्जेक्ट सिस्टम के लिए नए फ्लेवर्स और कॉमनलूप्स मुख्य प्रभाव थे।


== उदाहरण ==
== उदाहरण ==


=== सामान्य लिस्प ===
=== सामान्य लिस्प ===
दो पैरामीटर ऑब्जेक्ट-1 और ऑब्जेक्ट-2 के साथ एक सामान्य फ़ंक्शन को परिभाषित करें। सामान्य फ़ंक्शन का नाम कोलाइड है।
एक जेनेरिक फ़ंक्शन को दो पैरामीटर ऑब्जेक्ट-1 और ऑब्जेक्ट-2 के साथ परिभाषित करें। जेनेरिक फ़ंक्शन का नाम ''कोलाइड'' है।
<syntaxhighlight lang="lisp">
<syntaxhighlight lang="lisp">
  (defgeneric collide (object-1 object-2))
  (defgeneric collide (object-1 object-2))
</syntaxhighlight>
</syntaxhighlight>
सामान्य फ़ंक्शन से संबंधित विधियों को कक्षाओं के बाहर परिभाषित किया गया है।
जेनेरिक फ़ंक्शन से संबंधित मेथड्स क्लासेज़ के बाहर परिभाषित होते हैं। यहाँ हम जेनेरिक फ़ंक्शन ''कोलाइड'' के लिए एक मेथड परिभाषित करते हैं जो एस्टरॉइड (पहले पैरामीटर ऑब्जेक्ट-1) और स्पेसशिप (दूसरे पैरामीटर ऑब्जेक्ट-2) के लिए विशेषित किया गया है। पैरामीटर्स को मेथड बॉडी के भीतर नॉर्मल वेरिएबल मानक के रूप में उपयोग किया जाता है। क्लास स्लॉट्स तक पहुंच वाले कोई विशेष नेमस्पेस नहीं होता है।
यहां हम जेनेरिक फ़ंक्शन कोलाइड के लिए एक विधि को परिभाषित करते हैं जो क्षुद्रग्रह (पहला पैरामीटर ऑब्जेक्ट -1) और स्पेसशिप (दूसरा पैरामीटर ऑब्जेक्ट -2) वर्गों के लिए विशेष है। पैरामीटर्स का उपयोग विधि निकाय के अंदर सामान्य चर के रूप में किया जाता है। ऐसा कोई विशेष नामस्थान नहीं है जिसकी क्लास स्लॉट तक पहुंच हो।
<syntaxhighlight lang="lisp">
<syntaxhighlight lang="lisp">
  (defmethod collide ((object-1 asteroid) (object-2 spaceship))
  (defmethod collide ((object-1 asteroid) (object-2 spaceship))
   (format t "asteroid ~a collides with spaceship ~a" object-1 object-2))
   (format t "asteroid ~a collides with spaceship ~a" object-1 object-2))
</syntaxhighlight>
</syntaxhighlight>
सामान्य फ़ंक्शन को कॉल करना:
जेनेरिक फ़ंक्शन को कॉल करना:
<syntaxhighlight lang="lisp">
<syntaxhighlight lang="lisp">
? (collide (make-instance 'asteroid) (make-instance 'spaceship))
? (collide (make-instance 'asteroid) (make-instance 'spaceship))
asteroid #<ASTEROID 4020003FD3> collides with spaceship #<SPACESHIP 40200048CB>
asteroid #<ASTEROID 4020003FD3> collides with spaceship #<SPACESHIP 40200048CB>
</syntaxhighlight>
</syntaxhighlight>
कॉमन लिस्प जेनेरिक फ़ंक्शन से अलग-अलग तरीकों को भी पुनः प्राप्त कर सकता है। FIND-METHOD क्षुद्रग्रह और अंतरिक्ष यान वर्गों के लिए विशिष्ट सामान्य फ़ंक्शन कोलाइड से विधि ढूंढता है।
कॉमन लिस्प जेनेरिक फ़ंक्शन से विशिष्ट मेथड को भी पुनः प्राप्त कर सकते है। FIND-METHOD जेनेरिक फ़ंक्शन ''कोलाइड'' के लिए ''एस्टरॉइड'' और ''स्पेसशिप'' के लिए विशेषित किया गया मेथड को खोजता है।
<syntaxhighlight lang="lisp">
<syntaxhighlight lang="lisp">
? (find-method #'collide nil (list (find-class 'asteroid) (find-class 'spaceship)))
? (find-method #'collide nil (list (find-class 'asteroid) (find-class 'spaceship)))
Line 49: Line 48:


=== अन्य भाषाओं से तुलना ===
=== अन्य भाषाओं से तुलना ===
जेनेरिक फ़ंक्शन मोटे तौर पर स्मॉलटॉक की शर्तों मेथड (कंप्यूटर विज्ञान) से मेल खाते हैं, उल्लेखनीय अपवाद के साथ, स्मॉलटॉक में, रिसीवर का वर्ग एकमात्र निर्धारक है कि कोड का कौन सा निकाय कहा जाता है: तर्कों के प्रकार या मूल्य अप्रासंगिक हैं ([[एकल प्रेषण]]) ). [[एकाधिक प्रेषण]] वाली प्रोग्रामिंग भाषा में जब एक सामान्य फ़ंक्शन को कॉल किया जाता है, तो विधि प्रेषण सभी तर्कों के आधार पर होता है, न कि केवल एक जो विशेषाधिकार प्राप्त होता है। फ्लेवर्स (प्रोग्रामिंग भाषा) ने भी सामान्य कार्य प्रदान किए, लेकिन केवल एकल प्रेषण।
जेनेरिक फ़ंक्शन सामान्यतः स्मॉलटॉक की शर्तों के अनुरूप होते हैं, उल्लेखनीय अपवाद के साथ, स्मॉलटॉक में, रिसीवर की क्लास कोड का एकमात्र निर्धारक होती है: आर्ग्यूमेंट्स के मान अमान्य होते हैं ([[एकल प्रेषण|एकल डिस्पैच]])। किसी प्रोग्रामिंग भाषा में जो [[एकाधिक प्रेषण|एकाधिक डिस्पैच]] होते है, जब एक जेनेरिक फ़ंक्शन को कॉल किया जाता है, मेथड डिस्पैच सभी आर्ग्यूमेंट्स के आधार पर होता है, न कि केवल विशेषित आर्ग्यूमेंट के आधार पर। न्यू फ्लेवर्स भी जेनेरिक फ़ंक्शन प्रदान करते थे, लेकिन केवल एकल डिस्पैच।
 
जावास्क्रिप्ट में, एक सामान्य फ़ंक्शन एक ऐसा फ़ंक्शन है जो किसी विशिष्ट प्रकार के बजाय विभिन्न प्रकार के मानों के साथ काम कर सकता है। यह प्रकार के मापदंडों के उपयोग के माध्यम से या संचालित किए जा रहे मूल्य के प्रकार की गतिशील रूप से जांच करके प्राप्त किया जाता है। जावास्क्रिप्ट में सामान्य फ़ंक्शंस के लिए एक सामान्य उपयोग का मामला पुन: प्रयोज्य फ़ंक्शंस बनाना है जो विभिन्न डेटा प्रकारों, जैसे कि सरणियों, स्ट्रिंग्स या ऑब्जेक्ट्स के साथ काम कर सकते हैं। जावास्क्रिप्ट की गतिशील टाइपिंग प्रणाली इसे सामान्य कार्यों के निर्माण के लिए विशेष रूप से उपयुक्त बनाती है, क्योंकि आवश्यकतानुसार मूल्यों को आसानी से मजबूर किया जा सकता है या विभिन्न प्रकारों में परिवर्तित किया जा सकता है।
 
<!-- i moved this earlier because i think it's the more common definition. C++, Java, C#, ML , Rust,
another, completely separate definition of '''generic function''' is a function that uses [[parametric polymorphism]]. This is the definition used when working with a language like [[OCaml]]. An example of a generic function is
<syntaxhighlight lang="ocaml">
let id : 'a -> 'a = fun x -> x
</syntaxhighlight>
which takes an argument of any type and returns something of that same type. -->
 


जावास्क्रिप्ट में, एक जेनेरिक फ़ंक्शन एक ऐसा फ़ंक्शन होता है जो एक विशिष्ट टाइप के बजाय विभिन्न टाइप के मानों के साथ कार्य कर सकता है। यह प्रकार के पैरामीटर्स के उपयोग के माध्यम से या संचालित किए जा रहे मूल्य के प्रकार की डायनामिक रूप से जांच करके प्राप्त किया जाता है। जावास्क्रिप्ट में जेनेरिक फ़ंक्शन के लिए सामान्य उपयोग की स्थिति पुन: प्रयोज्य फ़ंक्शन बनाना है जो विभिन्न डेटा टाइप्स, जैसे कि ऐरे, स्ट्रिंग या ऑब्जेक्ट के साथ कार्य कर सकते हैं। जावास्क्रिप्ट की डयनमिक टाइपिंग सिस्टम इसे जेनेरिक फ़ंक्शनों के निर्माण के लिए विशेष रूप से अनुकूल बनाती है, क्योंकि आवश्यकतानुसार मानों को सरलता से विशिष्ट टाइप्स में परिवर्तित किया जा सकता है।
== संदर्भ ==
== संदर्भ ==
{{Reflist}}
{{Reflist}}


{{DEFAULTSORT:Generic Function}}[[Category: विधि (कंप्यूटर प्रोग्रामिंग)]]
{{DEFAULTSORT:Generic Function}}
 
 


[[Category: Machine Translated Page]]
[[Category:Articles with hatnote templates targeting a nonexistent page|Generic Function]]
[[Category:Created On 23/06/2023]]
[[Category:Created On 23/06/2023|Generic Function]]
[[Category:Machine Translated Page|Generic Function]]
[[Category:Pages with script errors|Generic Function]]
[[Category:Templates Vigyan Ready]]
[[Category:विधि (कंप्यूटर प्रोग्रामिंग)|Generic Function]]

Latest revision as of 19:25, 21 July 2023

कंप्यूटर प्रोग्रामिंग में, जेनेरिक फ़ंक्शन (फंक्शन) ऐसा फ़ंक्शन होता है जो पॉलीमॉरफिस्म (बहुरूपता) के लिए परिभाषित होता है।

स्थैतिक रूप से टाइप की गई भाषाओं में

स्थैतिक रूप से टाइप भाषाओं (जैसे सी++ और जावा) में, जेनेरिक फ़ंक्शन शब्द का उपयोग कॉंपाइल टाइम पॉलीमॉरफिस्म (स्थैतिक डिस्पैच), विशेष रूप से पैरामीट्रिक पॉलीमॉरफिस्म के लिए एक प्रक्रिया (मेकेनिज़्म) को संदर्भित करता है। ये टाइप पैरामीटर्स के साथ परिभाषित फ़ंक्शन होते हैं, जिन्हें कॉंपाइल टाइम टाइप इनफार्मेशन के साथ हल किया जाना चाहिए। कंपाइलर किसी भी फ़ंक्शन ओवरलोडिंग को उचित रूप से हल करते हुए, उपयुक्त संस्करणों को शीघ्र प्रचलित के लिए इन टाइप्स का उपयोग करता है।

सामान्य लिस्प ऑब्जेक्ट सिस्टम में

कुछ ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग सिस्टम में, जैसे कि कॉमन लिस्प ऑब्जेक्ट सिस्टम (सीएलओएस)[1] और डायलन, जेनेरिक फ़ंक्शन एंटिटी होता है जिसमें सभी ऐसे नाम वाले मेथड्स सम्मिलित होते हैं। सामान्यतः जेनेरिक फ़ंक्शन एक क्लास का एक उदाहरण होता है जो फ़ंक्शन और स्टैण्डर्ड-ऑब्जेक्ट दोनों से प्राप्त होता है। इस प्रकार, जेनेरिक फ़ंक्शन, फ़ंक्शन (जिन्हें आर्ग्यूमेंट्स के साथ कॉल और लागू किया जा सकता है) और स्टैंडर्ड-ऑब्जेक्ट्स होते हैं। मेटाऑब्जेक्ट प्रोटोकॉल की किताब "द आर्ट ऑफ़ द मेटाओबजेक्ट प्रोटोकॉल" विस्तार से सीएलओएस जेनेरिक फ़ंक्शन के अंतर्गत कार्यान्वयन और उपयोग की व्याख्या करती है।

लिस्प के शुरुआती ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग एक्सटेंशन में से एक फ्लेवर्स है। इसमें स्मॉलटॉक से प्रभावित सामान्य मैसेज भेजने की परियोजना का उपयोग किया गया। मैसेज भेजने के लिए फ्लेवर्स सिंटैक्स निम्नलिखित है:

 (send object :message)

नए फ्लेवर्स के साथ, यह निर्णय लिया गया कि मैसेज एक वास्तविक फ़ंक्शन होना चाहिए और सामान्य फ़ंक्शन कॉलिंग सिंटैक्स का उपयोग किया जाना चाहिए:

 (message object)

मैसेज अब स्वयं में एक जेनेरिक फ़ंक्शन, ऑब्जेक्ट और फ़ंक्शन होता है। मैसेज के भिन्न-भिन्न कार्यान्वयन को मेथड्स कहा जाता है।

कॉमनलूप्स में भी यही विचार लागू किया गया था।[2] कॉमन लिस्प ऑब्जेक्ट सिस्टम के लिए नए फ्लेवर्स और कॉमनलूप्स मुख्य प्रभाव थे।

उदाहरण

सामान्य लिस्प

एक जेनेरिक फ़ंक्शन को दो पैरामीटर ऑब्जेक्ट-1 और ऑब्जेक्ट-2 के साथ परिभाषित करें। जेनेरिक फ़ंक्शन का नाम कोलाइड है।

 (defgeneric collide (object-1 object-2))

जेनेरिक फ़ंक्शन से संबंधित मेथड्स क्लासेज़ के बाहर परिभाषित होते हैं। यहाँ हम जेनेरिक फ़ंक्शन कोलाइड के लिए एक मेथड परिभाषित करते हैं जो एस्टरॉइड (पहले पैरामीटर ऑब्जेक्ट-1) और स्पेसशिप (दूसरे पैरामीटर ऑब्जेक्ट-2) के लिए विशेषित किया गया है। पैरामीटर्स को मेथड बॉडी के भीतर नॉर्मल वेरिएबल मानक के रूप में उपयोग किया जाता है। क्लास स्लॉट्स तक पहुंच वाले कोई विशेष नेमस्पेस नहीं होता है।

 (defmethod collide ((object-1 asteroid) (object-2 spaceship))
   (format t "asteroid ~a collides with spaceship ~a" object-1 object-2))

जेनेरिक फ़ंक्शन को कॉल करना:

? (collide (make-instance 'asteroid) (make-instance 'spaceship))
asteroid #<ASTEROID 4020003FD3> collides with spaceship #<SPACESHIP 40200048CB>

कॉमन लिस्प जेनेरिक फ़ंक्शन से विशिष्ट मेथड को भी पुनः प्राप्त कर सकते है। FIND-METHOD जेनेरिक फ़ंक्शन कोलाइड के लिए एस्टरॉइड और स्पेसशिप के लिए विशेषित किया गया मेथड को खोजता है।

? (find-method #'collide nil (list (find-class 'asteroid) (find-class 'spaceship)))
#<STANDARD-METHOD COLLIDE NIL (ASTEROID SPACESHIP) 4150015E43>


अन्य भाषाओं से तुलना

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

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

संदर्भ

  1. The Common Lisp Object System: An Overview
  2. "कॉमनलूप्स, लिस्प और ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग को मर्ज करना" (PDF). Archived from the original (PDF) on 2011-06-04. Retrieved 2009-12-10.