दिस (THIS कंप्यूटर प्रोग्रामिंग): Difference between revisions
No edit summary |
No edit summary |
||
Line 2: | Line 2: | ||
कोई भी दृष्टिकोण संकलक को स्वीकार्य है, किन्तु निहित संस्करण (उदा. <code>एक्स:= फू</code>) को प्राथमिकता दी जाती है जिससे कि यह कम क्रियात्मक है। | कोई भी दृष्टिकोण संकलक को स्वीकार्य है, किन्तु निहित संस्करण (उदा. <code>एक्स:= फू</code>) को प्राथमिकता दी जाती है जिससे कि यह कम क्रियात्मक है। | ||
अन्य भाषाओं की तरह, ऐसे समय भी आते हैं जब कीवर्ड का उपयोग किया जाता है <code> | अन्य भाषाओं की तरह, ऐसे समय भी आते हैं जब कीवर्ड का उपयोग किया जाता है <code>करंट</code> अनिवार्य है, जैसे: | ||
कक्षा | कक्षा | ||
मेरी कक्षा | मेरी कक्षा | ||
Line 17: | Line 17: | ||
अंत | अंत | ||
उपरोक्त कोड के मामले में, लाइन #11 पर ''' | उपरोक्त कोड के मामले में, लाइन #11 पर '''मेक_विथ_समथिंग''' पर कॉल स्पष्ट रूप से कीवर्ड को पास करके वर्तमान क्लास को पास कर रही है <code>करंट</code>. | ||
=== जावा === | === जावा === | ||
{{details|जावा (प्रोग्रामिंग भाषा)}} | {{details|जावा (प्रोग्रामिंग भाषा)}} | ||
कीवर्ड <code> | कीवर्ड <code>दिस</code> जावा (प्रोग्रामिंग भाषा) भाषा कीवर्ड है जो उस वर्ग के वर्तमान उदाहरण का प्रतिनिधित्व करता है जिसमें यह दिखाई देता है। इसका उपयोग क्लास वेरिएबल्स और विधियों तक पहुंचने के लिए किया जाता है। | ||
चूँकि जावा में सभी इंस्टेंस विधियाँ आभासी हैं, <code> | चूँकि जावा में सभी इंस्टेंस विधियाँ आभासी हैं, <code>दिस</code> कभी भी शून्य नहीं हो सकता.<ref>Barnes, D. and Kölling, M. ''Objects First with Java''. "...the reason for using this construct [this] is that we have a situation that is known as '''name overloading''' - the same name being used for two different entities... It is important to understand that the fields and the parameters are separate variables that exist independently of each other, even though they share similar names. A parameter and a field sharing a name is not really a problem in Java."{{citation needed|date=February 2013}}</ref> | ||
=== जावास्क्रिप्ट === | === जावास्क्रिप्ट === | ||
{{details|जावास्क्रिप्ट}} | {{details|जावास्क्रिप्ट}} | ||
जावास्क्रिप्ट में, जो प्रोग्रामिंग या स्क्रिप्टिंग भाषा है जिसका उपयोग वेब ब्राउज़र में बड़े पैमाने पर किया जाता है, <code> | जावास्क्रिप्ट में, जो प्रोग्रामिंग या स्क्रिप्टिंग भाषा है जिसका उपयोग वेब ब्राउज़र में बड़े पैमाने पर किया जाता है, <code>दिस</code> महत्वपूर्ण कीवर्ड है, चूँकि इसका मूल्यांकन किस प्रकार किया जाता है यह इस बात पर निर्भर करता है कि इसका उपयोग कहाँ किया जाता है। | ||
* जब किसी फलन के बाहर, वैश्विक स्थान में उपयोग किया जाता है, <code> | * जब किसी फलन के बाहर, वैश्विक स्थान में उपयोग किया जाता है, <code>दिस</code> एन्क्लोजिंग ऑब्जेक्ट को संदर्भित करता है, जो इस मामले में एन्क्लोजिंग ब्राउज़र विंडो है <code>विंडो</code> वस्तु। | ||
* जब ग्लोबल स्पेस में परिभाषित किसी फलन में उपयोग किया जाता है, तब कीवर्ड क्या होता है <code> | * जब ग्लोबल स्पेस में परिभाषित किसी फलन में उपयोग किया जाता है, तब कीवर्ड क्या होता है <code>दिस</code> संदर्भित करता है यह इस पर निर्भर करता है कि फलन को कैसे कॉल किया जाता है। जब ऐसे फलन को सीधे कॉल किया जाता है (उदा. <code>एफ(एक्स)</code>), <code>दिस</code> उस वैश्विक स्थान को संदर्भित करेगा जिसमें फलन परिभाषित किया गया है, और जिसमें अन्य वैश्विक फलन और चर भी उपस्तिथ हो सकते हैं (या सख्त मोड में, यह है <code>अपरिभाषित</code>). यदि वैश्विक फलन युक्त है <code>दिस</code> चूँकि, दस्तावेज़ ऑब्जेक्ट में किसी तत्व के ईवेंट हैंडलर के भाग के रूप में कॉल किया जाता है <code>दिस</code> कॉलिंग एचटीएमएल तत्व को संदर्भित करेगा। | ||
* जब किसी विधि का उपयोग करके कॉल किया जाता है <code> | * जब किसी विधि का उपयोग करके कॉल किया जाता है <code>न्यू</code> कीवर्ड (उदा. <code>वार सी = न्यू थिंग()</code>) फिर थिंग के भीतर <code>दिस</code> थिंग ऑब्जेक्ट को ही संदर्भित करता है। | ||
* जब किसी फलन को किसी ऑब्जेक्ट की प्रॉपर्टी के रूप में जोड़ा जाता है और उस ऑब्जेक्ट की विधि के रूप में बुलाया जाता है (उदाहरण के लिए) <code> | * जब किसी फलन को किसी ऑब्जेक्ट की प्रॉपर्टी के रूप में जोड़ा जाता है और उस ऑब्जेक्ट की विधि के रूप में बुलाया जाता है (उदाहरण के लिए) <code>ऑब्जेक्ट.एफ(एक्स)</code>), <code>दिस</code> उस ऑब्जेक्ट को संदर्भित करेगा जिसके भीतर फलन निहित है।<ref>Crockford, Douglas, 2008. ''JavaScript: The Good Parts''. O'Reilly Media Inc. and Yahoo! Inc. Chapter 4, ''Functions'', p 28. {{ISBN|978-0-596-51774-8}}</ref><ref>Powell, Thomas A, and Schneider, Fritz, 2012. ''JavaScript: The Complete Reference, Third Edition.'' McGraw-Hill. Chapter 5, ''Functions'', pp 170–1. {{ISBN|978-0-07-174120-0}}</ref> इसे मैन्युअल रूप से निर्दिष्ट करना भी संभव है <code>दिस</code> किसी फलन को कॉल करते समय, का उपयोग करके <code>.कॉल()</code> या <code>.अप्लाई()</code> फलन ऑब्जेक्ट के तरीके।<ref>Goodman, Danny, with Morrison, Michael, 2004. ''JavaScript Bible, 5th Edition.'' Wiley Publishing, Inc., Indianapolis, USA. Chapter 33, ''Functions and Custom Objects'', p 987. {{ISBN|0-7645-5743-2}}</ref> उदाहरण के लिए, विधि कॉल <code>ऑब्जेक्ट.एफ(एक्स)</code> के रूप में भी लिखा जा सकता है <code>ऑब्जेक्ट.एफ.कॉल(ऑब्जेक्ट, एक्स)</code>. | ||
के विभिन्न अर्थों के इर्द-गिर्द काम करना <code> | के विभिन्न अर्थों के इर्द-गिर्द काम करना <code>दिस</code> डीओएम ईवेंट हैंडलर जैसे नेस्टेड फ़ंक्शंस में, इसे सहेजना जावास्क्रिप्ट में सामान्य मुहावरा है <code>दिस</code> वेरिएबल में कॉलिंग ऑब्जेक्ट का संदर्भ (सामान्यतः कहा जाता है <code>डेट</code> या <code>सेल्फ</code>), और फिर नेस्टेड फ़ंक्शंस में कॉलिंग ऑब्जेक्ट को संदर्भित करने के लिए वेरिएबल का उपयोग करते है। | ||
उदाहरण के लिए: | उदाहरण के लिए: | ||
Line 50: | Line 50: | ||
}); | }); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
विशेष रूप से, जावास्क्रिप्ट दोनों का उपयोग करता है <code> | विशेष रूप से, जावास्क्रिप्ट दोनों का उपयोग करता है <code>दिस</code> और संबंधित कीवर्ड <code>सेल्फ</code><ref>[https://developer.mozilla.org/en-US/docs/Web/API/Window/self ''Mozilla Developer Network'': Window.self]</ref> (अधिकांश अन्य भाषाओं के विपरीत जो या दूसरे को नियोजित करती हैं), साथ <code>सेल्फ</code> विशेष रूप से वेब कर्मियों तक ही सीमित रखा जा रहा है।<ref>[https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API ''Mozilla Developer Network'': Web Worker API]</ref> | ||
अंत में, वैश्विक (विंडो या समतुल्य) ऑब्जेक्ट को विशेष रूप से संदर्भित करने के विश्वसनीय तरीके के रूप में, जावास्क्रिप्ट की सुविधा है <code> | |||
अंत में, वैश्विक (विंडो या समतुल्य) ऑब्जेक्ट को विशेष रूप से संदर्भित करने के विश्वसनीय तरीके के रूप में, जावास्क्रिप्ट की सुविधा है <code>ग्लोबलदिस</code> कीवर्ड.<ref>[https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/globalThis ''Mozilla Developer Network'': globalThis]</ref> | |||
=== दो === | === दो === | ||
{{details|लुआ (प्रोग्रामिंग भाषा)}} | {{details|लुआ (प्रोग्रामिंग भाषा)}} | ||
लुआ में, <code> | लुआ में, <code>सेल्फ</code> जब फ़ंक्शंस का उपयोग करके परिभाषित किया जाता है तब सिंटैक्टिक शुगर के रूप में बनाया जाता है <code>:</code> ऑपरेटर।<ref>{{Cite web|url=https://www.lua.org/pil/16.html|title = Programming in Lua : 16}}</ref> किसी विधि का उपयोग करते समय <code>:</code>, अनुक्रमित की जा रही वस्तु को अंतर्निहित रूप से प्रयुक्त किए जा रहे फलन के पहले तर्क के रूप में दिया जाता है। | ||
उदाहरण के लिए, निम्नलिखित दो कार्य समतुल्य | उदाहरण के लिए, निम्नलिखित दो कार्य समतुल्य होते हैं। | ||
<syntaxhighlight lang="lua"> | <syntaxhighlight lang="lua"> | ||
Line 74: | Line 75: | ||
obj.bar(obj, "Bar") -- equivalent to obj:bar("Bar") | obj.bar(obj, "Bar") -- equivalent to obj:bar("Bar") | ||
</syntaxhighlight> | </syntaxhighlight> | ||
लुआ स्वयं ऑब्जेक्ट-ओरिएंटेड नहीं है, किन्तु जब इसे मेटाटेबल्स नामक अन्य सुविधा के साथ जोड़ा जाता है, तब इसका उपयोग किया जाता है <code> | लुआ स्वयं ऑब्जेक्ट-ओरिएंटेड नहीं है, किन्तु जब इसे मेटाटेबल्स नामक अन्य सुविधा के साथ जोड़ा जाता है, तब इसका उपयोग किया जाता है <code>सेल्फ</code> प्रोग्रामर को फलन को ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग के समान तरीके से परिभाषित करने देता है। | ||
=== पावरशेल === | === पावरशेल === | ||
पॉवरशैल में विशेष [[स्वचालित चर]] <code>$_</code> पाइपलाइन ऑब्जेक्ट में वर्तमान ऑब्जेक्ट सम्मिलित है। आप इस वेरिएबल का उपयोग उन कमांड्स में कर सकते हैं जो प्रत्येक ऑब्जेक्ट पर या पाइपलाइन में चयनित ऑब्जेक्ट पर कार्रवाई करते हैं।<ref>{{Cite web|url=https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_automatic_variables|title=PowerShell: About Automatic Variables|last=msdn|website=docs.microsoft.com|language=en-us|access-date=2018-03-22}}</ref> | |||
एक , दो , तीन | % { $_ लिखें } | एक , दो , तीन | % { $_ लिखें } | ||
पॉवरशेल 5.0 से भी प्रारंभ होता है, जो कक्षाओं और अन्य उपयोगकर्ता-परिभाषित प्रकारों को परिभाषित करने के लिए औपचारिक वाक्यविन्यास जोड़ता है,<ref>{{Cite web|url=https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_classes|title=about_Classes|last=msdn|website=docs.microsoft.com|language=en-us|access-date=2018-12-17}}</ref> <code>$दिस</code> वेरिएबल ऑब्जेक्ट के वर्तमान उदाहरण का वर्णन करता है। | |||
===पायथन === | ===पायथन === | ||
पायथन में, के लिए कोई कीवर्ड नहीं है <code> | पायथन में, के लिए कोई कीवर्ड नहीं है <code>दिस</code>. जब किसी सदस्य फलन को किसी ऑब्जेक्ट पर कॉल किया जाता है, तब यह ऑब्जेक्ट के क्लास ऑब्जेक्ट पर उसी नाम के साथ सदस्य फलन को आमंत्रित करता है, ऑब्जेक्ट स्वचालित रूप से फलन के पहले तर्क से जुड़ा होता है। इस प्रकार, विधि (कंप्यूटर प्रोग्रामिंग) का अनिवार्य पहला पैरामीटर के रूप में कार्य करता है <code>दिस</code>; इस पैरामीटर को पारंपरिक रूप से नाम दिया गया है <code>सेल्फ</code>, किन्तु नाम कुछ भी रखा जा सकता है। | ||
कक्षा विधियों में (के साथ बनाया गया <code> | कक्षा विधियों में (के साथ बनाया गया <code>क्लासमेथड</code> डेकोरेटर), पहला तर्क क्लास ऑब्जेक्ट को ही संदर्भित करता है, और इसे पारंपरिक रूप से <code>क्लास</code> कहा जाता है, इनका उपयोग मुख्य रूप से इनहेरिटेबल कंस्ट्रक्टर्स के लिए किया जाता है,<ref>''Unifying types and classes in Python 2.2,'' Guido van Rossum, "[https://www.python.org/download/releases/2.2.3/descrintro/#__new__ Overriding the __new__ method]"</ref> जहां पैरामीटर के रूप में क्लास का उपयोग कंस्ट्रक्टर को उपवर्गीकृत करने की अनुमति देता है। इस प्रकार स्थैतिक तरीकों में (के साथ बनाया गया <code>स्थैतिकमेथड</code> डेकोरेटर), कोई विशेष पहला तर्क उपस्तिथ नहीं है। | ||
===जंग === | ===जंग === | ||
रस्ट में, प्रकारों को उनसे जुड़े कार्यों से भिन्न घोषित किया जाता है। पारंपरिक रूप से ऑब्जेक्ट-ओरिएंटेड भाषाओं में इंस्टेंस विधियों के अनुरूप डिज़ाइन किए गए फ़ंक्शंस को स्पष्ट रूप से लिया जाना चाहिए <code> | रस्ट में, प्रकारों को उनसे जुड़े कार्यों से भिन्न घोषित किया जाता है। पारंपरिक रूप से ऑब्जेक्ट-ओरिएंटेड भाषाओं में इंस्टेंस विधियों के अनुरूप डिज़ाइन किए गए फ़ंक्शंस को स्पष्ट रूप से लिया जाना चाहिए <code>सेल्फ</code> उनके पहले पैरामीटर के रूप में। फिर इन फ़ंक्शंस का उपयोग करके कॉल किया जा सकता है <code>इंस्टैंस.मेथड()</code> सिंटैक्स चीनी. उदाहरण के लिए: | ||
<syntaxhighlight lang="rust> | <syntaxhighlight lang="rust> | ||
Line 110: | Line 110: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
यह प्रकार को परिभाषित करता है, <code> | यह प्रकार को परिभाषित करता है, <code>फू</code>, जिसके चार संबद्ध कार्य हैं। पहला, <code>फू::न्यू()</code>, इंस्टेंस फलन नहीं है और इसे प्रकार उपसर्ग के साथ निर्दिष्ट किया जाना चाहिए। शेष तीन सभी लेते हैं <code>सेल्फ</code> विभिन्न तरीकों से पैरामीटर, और इसे ए पर कॉल किया जा सकता है <code>फू</code> उदाहरण के लिए डॉट-नोटेशन सिंटैक्स शुगर का उपयोग किया जाता है, जो स्पष्ट रूप से टाइप-योग्य फलन नाम को कॉल करने के सामान्तर है <code>सेल्फ</code> पहला पैरामीटर. | ||
<syntaxhighlight lang="rust"> | <syntaxhighlight lang="rust"> | ||
Line 122: | Line 122: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
===स्वयं === | ===स्वयं === | ||
सेल्फ (प्रोग्रामिंग भाषा) भाषा का नाम सेल्फ के इसी प्रयोग के आधार पर रखा गया है। | |||
=== एक्सबेस++ === | === एक्सबेस++ === | ||
<code> | <code>सेल्फ</code> किसी वर्ग के तरीकों के भीतर सख्ती से उपयोग किया जाता है। | ||
संदर्भित करने का दूसरा प्रणाली <code> | संदर्भित करने का दूसरा प्रणाली <code>सेल्फ</code> उपयोग करना है <code>::</code>. | ||
== '''यह भी देखें''' == | == '''यह भी देखें''' == |
Revision as of 15:31, 6 August 2023
कोई भी दृष्टिकोण संकलक को स्वीकार्य है, किन्तु निहित संस्करण (उदा. एक्स:= फू
) को प्राथमिकता दी जाती है जिससे कि यह कम क्रियात्मक है।
अन्य भाषाओं की तरह, ऐसे समय भी आते हैं जब कीवर्ड का उपयोग किया जाता है करंट
अनिवार्य है, जैसे:
कक्षा मेरी कक्षा सुविधा--पहुँच my_command -- 'वर्तमान' के साथ MY_OTHER_CLASS बनाएं स्थानीय एक्स: मेरी_अन्य_क्लास करना x.make_with_something बनाएं (वर्तमान) अंत अंत
उपरोक्त कोड के मामले में, लाइन #11 पर मेक_विथ_समथिंग पर कॉल स्पष्ट रूप से कीवर्ड को पास करके वर्तमान क्लास को पास कर रही है करंट
.
जावा
कीवर्ड दिस
जावा (प्रोग्रामिंग भाषा) भाषा कीवर्ड है जो उस वर्ग के वर्तमान उदाहरण का प्रतिनिधित्व करता है जिसमें यह दिखाई देता है। इसका उपयोग क्लास वेरिएबल्स और विधियों तक पहुंचने के लिए किया जाता है।
चूँकि जावा में सभी इंस्टेंस विधियाँ आभासी हैं, दिस
कभी भी शून्य नहीं हो सकता.[1]
जावास्क्रिप्ट
जावास्क्रिप्ट में, जो प्रोग्रामिंग या स्क्रिप्टिंग भाषा है जिसका उपयोग वेब ब्राउज़र में बड़े पैमाने पर किया जाता है, दिस
महत्वपूर्ण कीवर्ड है, चूँकि इसका मूल्यांकन किस प्रकार किया जाता है यह इस बात पर निर्भर करता है कि इसका उपयोग कहाँ किया जाता है।
- जब किसी फलन के बाहर, वैश्विक स्थान में उपयोग किया जाता है,
दिस
एन्क्लोजिंग ऑब्जेक्ट को संदर्भित करता है, जो इस मामले में एन्क्लोजिंग ब्राउज़र विंडो हैविंडो
वस्तु। - जब ग्लोबल स्पेस में परिभाषित किसी फलन में उपयोग किया जाता है, तब कीवर्ड क्या होता है
दिस
संदर्भित करता है यह इस पर निर्भर करता है कि फलन को कैसे कॉल किया जाता है। जब ऐसे फलन को सीधे कॉल किया जाता है (उदा.एफ(एक्स)
),दिस
उस वैश्विक स्थान को संदर्भित करेगा जिसमें फलन परिभाषित किया गया है, और जिसमें अन्य वैश्विक फलन और चर भी उपस्तिथ हो सकते हैं (या सख्त मोड में, यह हैअपरिभाषित
). यदि वैश्विक फलन युक्त हैदिस
चूँकि, दस्तावेज़ ऑब्जेक्ट में किसी तत्व के ईवेंट हैंडलर के भाग के रूप में कॉल किया जाता हैदिस
कॉलिंग एचटीएमएल तत्व को संदर्भित करेगा। - जब किसी विधि का उपयोग करके कॉल किया जाता है
न्यू
कीवर्ड (उदा.वार सी = न्यू थिंग()
) फिर थिंग के भीतरदिस
थिंग ऑब्जेक्ट को ही संदर्भित करता है। - जब किसी फलन को किसी ऑब्जेक्ट की प्रॉपर्टी के रूप में जोड़ा जाता है और उस ऑब्जेक्ट की विधि के रूप में बुलाया जाता है (उदाहरण के लिए)
ऑब्जेक्ट.एफ(एक्स)
),दिस
उस ऑब्जेक्ट को संदर्भित करेगा जिसके भीतर फलन निहित है।[2][3] इसे मैन्युअल रूप से निर्दिष्ट करना भी संभव हैदिस
किसी फलन को कॉल करते समय, का उपयोग करके.कॉल()
या.अप्लाई()
फलन ऑब्जेक्ट के तरीके।[4] उदाहरण के लिए, विधि कॉलऑब्जेक्ट.एफ(एक्स)
के रूप में भी लिखा जा सकता हैऑब्जेक्ट.एफ.कॉल(ऑब्जेक्ट, एक्स)
.
के विभिन्न अर्थों के इर्द-गिर्द काम करना दिस
डीओएम ईवेंट हैंडलर जैसे नेस्टेड फ़ंक्शंस में, इसे सहेजना जावास्क्रिप्ट में सामान्य मुहावरा है दिस
वेरिएबल में कॉलिंग ऑब्जेक्ट का संदर्भ (सामान्यतः कहा जाता है डेट
या सेल्फ
), और फिर नेस्टेड फ़ंक्शंस में कॉलिंग ऑब्जेक्ट को संदर्भित करने के लिए वेरिएबल का उपयोग करते है।
उदाहरण के लिए:
// In this example $ is a reference to the jQuery library
$(".element").hover(function() {
// Here, both this and that point to the element under the mouse cursor.
var that = this;
$(this).find('.elements').each(function() {
// Here, this points to the DOM element being iterated.
// However, that still points to the element under the mouse cursor.
$(this).addClass("highlight");
});
});
विशेष रूप से, जावास्क्रिप्ट दोनों का उपयोग करता है दिस
और संबंधित कीवर्ड सेल्फ
[5] (अधिकांश अन्य भाषाओं के विपरीत जो या दूसरे को नियोजित करती हैं), साथ सेल्फ
विशेष रूप से वेब कर्मियों तक ही सीमित रखा जा रहा है।[6]
अंत में, वैश्विक (विंडो या समतुल्य) ऑब्जेक्ट को विशेष रूप से संदर्भित करने के विश्वसनीय तरीके के रूप में, जावास्क्रिप्ट की सुविधा है ग्लोबलदिस
कीवर्ड.[7]
दो
लुआ में, सेल्फ
जब फ़ंक्शंस का उपयोग करके परिभाषित किया जाता है तब सिंटैक्टिक शुगर के रूप में बनाया जाता है :
ऑपरेटर।[8] किसी विधि का उपयोग करते समय :
, अनुक्रमित की जा रही वस्तु को अंतर्निहित रूप से प्रयुक्त किए जा रहे फलन के पहले तर्क के रूप में दिया जाता है।
उदाहरण के लिए, निम्नलिखित दो कार्य समतुल्य होते हैं।
local obj = {}
function obj.foo(arg1, arg2)
print(arg1, arg2) -- cannot use "self" here
end
function obj:bar(arg)
print(self, arg) -- "self" is an implicit first argument before arg
end
-- All functions can be invoked both ways, with "." or with ":"
obj:foo("Foo") -- equivalent to obj.foo(obj, "Foo")
obj.bar(obj, "Bar") -- equivalent to obj:bar("Bar")
लुआ स्वयं ऑब्जेक्ट-ओरिएंटेड नहीं है, किन्तु जब इसे मेटाटेबल्स नामक अन्य सुविधा के साथ जोड़ा जाता है, तब इसका उपयोग किया जाता है सेल्फ
प्रोग्रामर को फलन को ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग के समान तरीके से परिभाषित करने देता है।
पावरशेल
पॉवरशैल में विशेष स्वचालित चर $_
पाइपलाइन ऑब्जेक्ट में वर्तमान ऑब्जेक्ट सम्मिलित है। आप इस वेरिएबल का उपयोग उन कमांड्स में कर सकते हैं जो प्रत्येक ऑब्जेक्ट पर या पाइपलाइन में चयनित ऑब्जेक्ट पर कार्रवाई करते हैं।[9]
एक , दो , तीन | % { $_ लिखें }
पॉवरशेल 5.0 से भी प्रारंभ होता है, जो कक्षाओं और अन्य उपयोगकर्ता-परिभाषित प्रकारों को परिभाषित करने के लिए औपचारिक वाक्यविन्यास जोड़ता है,[10] $दिस
वेरिएबल ऑब्जेक्ट के वर्तमान उदाहरण का वर्णन करता है।
पायथन
पायथन में, के लिए कोई कीवर्ड नहीं है दिस
. जब किसी सदस्य फलन को किसी ऑब्जेक्ट पर कॉल किया जाता है, तब यह ऑब्जेक्ट के क्लास ऑब्जेक्ट पर उसी नाम के साथ सदस्य फलन को आमंत्रित करता है, ऑब्जेक्ट स्वचालित रूप से फलन के पहले तर्क से जुड़ा होता है। इस प्रकार, विधि (कंप्यूटर प्रोग्रामिंग) का अनिवार्य पहला पैरामीटर के रूप में कार्य करता है दिस
; इस पैरामीटर को पारंपरिक रूप से नाम दिया गया है सेल्फ
, किन्तु नाम कुछ भी रखा जा सकता है।
कक्षा विधियों में (के साथ बनाया गया क्लासमेथड
डेकोरेटर), पहला तर्क क्लास ऑब्जेक्ट को ही संदर्भित करता है, और इसे पारंपरिक रूप से क्लास
कहा जाता है, इनका उपयोग मुख्य रूप से इनहेरिटेबल कंस्ट्रक्टर्स के लिए किया जाता है,[11] जहां पैरामीटर के रूप में क्लास का उपयोग कंस्ट्रक्टर को उपवर्गीकृत करने की अनुमति देता है। इस प्रकार स्थैतिक तरीकों में (के साथ बनाया गया स्थैतिकमेथड
डेकोरेटर), कोई विशेष पहला तर्क उपस्तिथ नहीं है।
जंग
रस्ट में, प्रकारों को उनसे जुड़े कार्यों से भिन्न घोषित किया जाता है। पारंपरिक रूप से ऑब्जेक्ट-ओरिएंटेड भाषाओं में इंस्टेंस विधियों के अनुरूप डिज़ाइन किए गए फ़ंक्शंस को स्पष्ट रूप से लिया जाना चाहिए सेल्फ
उनके पहले पैरामीटर के रूप में। फिर इन फ़ंक्शंस का उपयोग करके कॉल किया जा सकता है इंस्टैंस.मेथड()
सिंटैक्स चीनी. उदाहरण के लिए:
struct Foo {
bar: i32,
}
impl Foo {
fn new() -> Foo {
Foo { bar: 0, }
}
fn refer(&self) {
println!("{}", self.bar);
}
fn mutate(&mut self, baz: i32) {
self.bar = baz;
}
fn consume(self) {
self.refer();
}
}
यह प्रकार को परिभाषित करता है, फू
, जिसके चार संबद्ध कार्य हैं। पहला, फू::न्यू()
, इंस्टेंस फलन नहीं है और इसे प्रकार उपसर्ग के साथ निर्दिष्ट किया जाना चाहिए। शेष तीन सभी लेते हैं सेल्फ
विभिन्न तरीकों से पैरामीटर, और इसे ए पर कॉल किया जा सकता है फू
उदाहरण के लिए डॉट-नोटेशन सिंटैक्स शुगर का उपयोग किया जाता है, जो स्पष्ट रूप से टाइप-योग्य फलन नाम को कॉल करने के सामान्तर है सेल्फ
पहला पैरामीटर.
let mut foo = Foo::new(); // must called as a type-specified function
foo.refer(); // prints "0". Foo::refer() has read-only access to the foo instance
foo.mutate(5); // mutates foo in place, permitted by the &mut specification, need foo to be declared mut
foo.consume(); // prints "5" and destroys foo, as Foo::consume() takes full ownership of self
// equivalent to foo.refer()
Foo::refer(foo); // compilation error: foo is out of scope
स्वयं
सेल्फ (प्रोग्रामिंग भाषा) भाषा का नाम सेल्फ के इसी प्रयोग के आधार पर रखा गया है।
एक्सबेस++
सेल्फ
किसी वर्ग के तरीकों के भीतर सख्ती से उपयोग किया जाता है।
संदर्भित करने का दूसरा प्रणाली सेल्फ
उपयोग करना है ::
.
यह भी देखें
- अनाम पुनरावर्तन – Recursion without calling a function by name
- वंशानुक्रम (वस्तु-उन्मुख प्रोग्रामिंग)
- आत्म संदर्भ
- सिज़ोफ्रेनिया (वस्तु-उन्मुख प्रोग्रामिंग)
- प्रोग्राम खंड उपसर्ग
संदर्भ
- ↑ Barnes, D. and Kölling, M. Objects First with Java. "...the reason for using this construct [this] is that we have a situation that is known as name overloading - the same name being used for two different entities... It is important to understand that the fields and the parameters are separate variables that exist independently of each other, even though they share similar names. A parameter and a field sharing a name is not really a problem in Java."[citation needed]
- ↑ Crockford, Douglas, 2008. JavaScript: The Good Parts. O'Reilly Media Inc. and Yahoo! Inc. Chapter 4, Functions, p 28. ISBN 978-0-596-51774-8
- ↑ Powell, Thomas A, and Schneider, Fritz, 2012. JavaScript: The Complete Reference, Third Edition. McGraw-Hill. Chapter 5, Functions, pp 170–1. ISBN 978-0-07-174120-0
- ↑ Goodman, Danny, with Morrison, Michael, 2004. JavaScript Bible, 5th Edition. Wiley Publishing, Inc., Indianapolis, USA. Chapter 33, Functions and Custom Objects, p 987. ISBN 0-7645-5743-2
- ↑ Mozilla Developer Network: Window.self
- ↑ Mozilla Developer Network: Web Worker API
- ↑ Mozilla Developer Network: globalThis
- ↑ "Programming in Lua : 16".
- ↑ msdn. "PowerShell: About Automatic Variables". docs.microsoft.com (in English). Retrieved 2018-03-22.
- ↑ msdn. "about_Classes". docs.microsoft.com (in English). Retrieved 2018-12-17.
- ↑ Unifying types and classes in Python 2.2, Guido van Rossum, "Overriding the __new__ method"
अग्रिम पठन
- मेयर्स, स्कॉट, 1995। अधिक प्रभावी सी++: आपके प्रोग्राम और डिज़ाइन को उत्तम बनाने के 35 नए तरीके। ISBN 0-201-63371-X स्कॉट मेयर्स
- स्ट्रॉस्ट्रुप, बर्जने, 1994। सी++ का डिज़ाइन और विकास। एडिसन-वेस्ले पब। कं ISBN 0-201-54330-3 बज़्ने स्ट्रॉस्ट्रुप