दिस (THIS कंप्यूटर प्रोग्रामिंग): Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 2: Line 2:
कोई भी दृष्टिकोण संकलक को स्वीकार्य है, किन्तु निहित संस्करण (उदा. <code>एक्स:= फू</code>) को प्राथमिकता दी जाती है जिससे कि यह कम क्रियात्मक है।
कोई भी दृष्टिकोण संकलक को स्वीकार्य है, किन्तु निहित संस्करण (उदा. <code>एक्स:= फू</code>) को प्राथमिकता दी जाती है जिससे कि यह कम क्रियात्मक है।


अन्य भाषाओं की तरह, ऐसे समय भी आते हैं जब कीवर्ड का उपयोग किया जाता है <code>Current</code> अनिवार्य है, जैसे:
अन्य भाषाओं की तरह, ऐसे समय भी आते हैं जब कीवर्ड का उपयोग किया जाता है <code>करंट</code> अनिवार्य है, जैसे:
   कक्षा
   कक्षा
   मेरी कक्षा
   मेरी कक्षा
Line 17: Line 17:
   
   
  अंत
  अंत
उपरोक्त कोड के मामले में, लाइन #11 पर '''make_with_something''' पर कॉल स्पष्ट रूप से कीवर्ड को पास करके वर्तमान क्लास को पास कर रही है <code>Current</code>.
उपरोक्त कोड के मामले में, लाइन #11 पर '''मेक_विथ_समथिंग''' पर कॉल स्पष्ट रूप से कीवर्ड को पास करके वर्तमान क्लास को पास कर रही है <code>करंट</code>.


=== जावा ===
=== जावा ===
{{details|जावा (प्रोग्रामिंग भाषा)}}
{{details|जावा (प्रोग्रामिंग भाषा)}}
कीवर्ड <code>this</code> जावा (प्रोग्रामिंग भाषा) भाषा कीवर्ड है जो उस वर्ग के वर्तमान उदाहरण का प्रतिनिधित्व करता है जिसमें यह दिखाई देता है। इसका उपयोग क्लास वेरिएबल्स और विधियों तक पहुंचने के लिए किया जाता है।
कीवर्ड <code>दिस</code> जावा (प्रोग्रामिंग भाषा) भाषा कीवर्ड है जो उस वर्ग के वर्तमान उदाहरण का प्रतिनिधित्व करता है जिसमें यह दिखाई देता है। इसका उपयोग क्लास वेरिएबल्स और विधियों तक पहुंचने के लिए किया जाता है।


चूँकि जावा में सभी इंस्टेंस विधियाँ आभासी हैं, <code>this</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>
चूँकि जावा में सभी इंस्टेंस विधियाँ आभासी हैं, <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>this</code> महत्वपूर्ण कीवर्ड है, चूँकि इसका मूल्यांकन किस प्रकार किया जाता है यह इस बात पर निर्भर करता है कि इसका उपयोग कहाँ किया जाता है।
जावास्क्रिप्ट में, जो प्रोग्रामिंग या स्क्रिप्टिंग भाषा है जिसका उपयोग वेब ब्राउज़र में बड़े पैमाने पर किया जाता है, <code>दिस</code> महत्वपूर्ण कीवर्ड है, चूँकि इसका मूल्यांकन किस प्रकार किया जाता है यह इस बात पर निर्भर करता है कि इसका उपयोग कहाँ किया जाता है।


* जब किसी फलन के बाहर, वैश्विक स्थान में उपयोग किया जाता है, <code>this</code> एन्क्लोजिंग ऑब्जेक्ट को संदर्भित करता है, जो इस मामले में एन्क्लोजिंग ब्राउज़र विंडो है <code>window</code> वस्तु।
* जब किसी फलन के बाहर, वैश्विक स्थान में उपयोग किया जाता है, <code>दिस</code> एन्क्लोजिंग ऑब्जेक्ट को संदर्भित करता है, जो इस मामले में एन्क्लोजिंग ब्राउज़र विंडो है <code>विंडो</code> वस्तु।
* जब ग्लोबल स्पेस में परिभाषित किसी फलन में उपयोग किया जाता है, तब कीवर्ड क्या होता है <code>this</code> संदर्भित करता है यह इस पर निर्भर करता है कि फलन को कैसे कॉल किया जाता है। जब ऐसे फलन को सीधे कॉल किया जाता है (उदा. <code>f(x)</code>), <code>this</code> उस वैश्विक स्थान को संदर्भित करेगा जिसमें फलन परिभाषित किया गया है, और जिसमें अन्य वैश्विक फलन और चर भी उपस्तिथ हो सकते हैं (या सख्त मोड में, यह है <code>undefined</code>). यदि वैश्विक फलन युक्त है <code>this</code> चूँकि, दस्तावेज़ ऑब्जेक्ट में किसी तत्व के ईवेंट हैंडलर के भाग के रूप में कॉल किया जाता है <code>this</code> कॉलिंग HTML तत्व को संदर्भित करेगा।
* जब ग्लोबल स्पेस में परिभाषित किसी फलन में उपयोग किया जाता है, तब कीवर्ड क्या होता है <code>दिस</code> संदर्भित करता है यह इस पर निर्भर करता है कि फलन को कैसे कॉल किया जाता है। जब ऐसे फलन को सीधे कॉल किया जाता है (उदा. <code>एफ(एक्स)</code>), <code>दिस</code> उस वैश्विक स्थान को संदर्भित करेगा जिसमें फलन परिभाषित किया गया है, और जिसमें अन्य वैश्विक फलन और चर भी उपस्तिथ हो सकते हैं (या सख्त मोड में, यह है <code>अपरिभाषित</code>). यदि वैश्विक फलन युक्त है <code>दिस</code> चूँकि, दस्तावेज़ ऑब्जेक्ट में किसी तत्व के ईवेंट हैंडलर के भाग के रूप में कॉल किया जाता है <code>दिस</code> कॉलिंग एचटीएमएल तत्व को संदर्भित करेगा।
* जब किसी विधि का उपयोग करके कॉल किया जाता है <code>new</code> कीवर्ड (उदा. <code>var c = new Thing()</code>) फिर थिंग के भीतर <code>this</code> थिंग ऑब्जेक्ट को ही संदर्भित करता है।
* जब किसी विधि का उपयोग करके कॉल किया जाता है <code>न्यू</code> कीवर्ड (उदा. <code>वार सी = न्यू थिंग()</code>) फिर थिंग के भीतर <code>दिस</code> थिंग ऑब्जेक्ट को ही संदर्भित करता है।
* जब किसी फलन को किसी ऑब्जेक्ट की प्रॉपर्टी के रूप में जोड़ा जाता है और उस ऑब्जेक्ट की विधि के रूप में बुलाया जाता है (उदाहरण के लिए) <code>obj.f(x)</code>), <code>this</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&ndash;1. {{ISBN|978-0-07-174120-0}}</ref> इसे मैन्युअल रूप से निर्दिष्ट करना भी संभव है <code>this</code> किसी फलन को कॉल करते समय, का उपयोग करके <code>.call()</code> या <code>.apply()</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>obj.f(x)</code> के रूप में भी लिखा जा सकता है <code>obj.f.call(obj, x)</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&ndash;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>this</code> DOM ईवेंट हैंडलर जैसे नेस्टेड फ़ंक्शंस में, इसे सहेजना जावास्क्रिप्ट में सामान्य मुहावरा है <code>this</code> वेरिएबल में कॉलिंग ऑब्जेक्ट का संदर्भ (सामान्यतः कहा जाता है <code>that</code> या <code>self</code>), और फिर नेस्टेड फ़ंक्शंस में कॉलिंग ऑब्जेक्ट को संदर्भित करने के लिए वेरिएबल का उपयोग करें।
के विभिन्न अर्थों के इर्द-गिर्द काम करना <code>दिस</code> डीओएम ईवेंट हैंडलर जैसे नेस्टेड फ़ंक्शंस में, इसे सहेजना जावास्क्रिप्ट में सामान्य मुहावरा है <code>दिस</code> वेरिएबल में कॉलिंग ऑब्जेक्ट का संदर्भ (सामान्यतः कहा जाता है <code>डेट</code> या <code>सेल्फ</code>), और फिर नेस्टेड फ़ंक्शंस में कॉलिंग ऑब्जेक्ट को संदर्भित करने के लिए वेरिएबल का उपयोग करते है।


उदाहरण के लिए:
उदाहरण के लिए:
Line 50: Line 50:
});
});
</syntaxhighlight>
</syntaxhighlight>
विशेष रूप से, जावास्क्रिप्ट दोनों का उपयोग करता है <code>this</code> और संबंधित कीवर्ड <code>self</code><ref>[https://developer.mozilla.org/en-US/docs/Web/API/Window/self ''Mozilla Developer Network'': Window.self]</ref> (अधिकांश अन्य भाषाओं के विपरीत जो या दूसरे को नियोजित करती हैं), साथ <code>self</code> विशेष रूप से वेब कर्मियों तक ही सीमित रखा जा रहा है।<ref>[https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API ''Mozilla Developer Network'': Web Worker API]</ref>
विशेष रूप से, जावास्क्रिप्ट दोनों का उपयोग करता है <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>globalThis</code> कीवर्ड.<ref>[https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/globalThis ''Mozilla Developer Network'': globalThis]</ref>
 
अंत में, वैश्विक (विंडो या समतुल्य) ऑब्जेक्ट को विशेष रूप से संदर्भित करने के विश्वसनीय तरीके के रूप में, जावास्क्रिप्ट की सुविधा है <code>ग्लोबलदिस</code> कीवर्ड.<ref>[https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/globalThis ''Mozilla Developer Network'': globalThis]</ref>
=== दो ===
=== दो ===
{{details|लुआ (प्रोग्रामिंग भाषा)}}
{{details|लुआ (प्रोग्रामिंग भाषा)}}
लुआ में, <code>self</code> जब फ़ंक्शंस का उपयोग करके परिभाषित किया जाता है तब सिंटैक्टिक शुगर के रूप में बनाया जाता है <code>:</code> ऑपरेटर।<ref>{{Cite web|url=https://www.lua.org/pil/16.html|title = Programming in Lua : 16}}</ref> किसी विधि का उपयोग करते समय <code>:</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>self</code> प्रोग्रामर को फलन को ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग के समान तरीके से परिभाषित करने देता है।
लुआ स्वयं ऑब्जेक्ट-ओरिएंटेड नहीं है, किन्तु जब इसे मेटाटेबल्स नामक अन्य सुविधा के साथ जोड़ा जाता है, तब इसका उपयोग किया जाता है <code>सेल्फ</code> प्रोग्रामर को फलन को ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग के समान तरीके से परिभाषित करने देता है।


=== पावरशेल ===
=== पावरशेल ===
PowerShell में विशेष [[स्वचालित चर]] <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>
पॉवरशैल में विशेष [[स्वचालित चर]] <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>
<सिंटैक्सहाइलाइट लैंग=पीएस1 >
  एक , दो , तीन | % { $_ लिखें }
  एक , दो , तीन | % { $_ लिखें }
</सिंटैक्सहाइलाइट>पॉवरशेल 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>$this</code> वेरिएबल ऑब्जेक्ट के वर्तमान उदाहरण का वर्णन करता है।
पॉवरशेल 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>this</code>. जब किसी सदस्य फलन को किसी ऑब्जेक्ट पर कॉल किया जाता है, तब यह ऑब्जेक्ट के क्लास ऑब्जेक्ट पर उसी नाम के साथ सदस्य फलन को आमंत्रित करता है, ऑब्जेक्ट स्वचालित रूप से फलन के पहले तर्क से जुड़ा होता है। इस प्रकार, विधि (कंप्यूटर प्रोग्रामिंग) का अनिवार्य पहला पैरामीटर के रूप में कार्य करता है <code>this</code>; इस पैरामीटर को पारंपरिक रूप से नाम दिया गया है <code>self</code>, किन्तु नाम कुछ भी रखा जा सकता है।
पायथन में, के लिए कोई कीवर्ड नहीं है <code>दिस</code>. जब किसी सदस्य फलन को किसी ऑब्जेक्ट पर कॉल किया जाता है, तब यह ऑब्जेक्ट के क्लास ऑब्जेक्ट पर उसी नाम के साथ सदस्य फलन को आमंत्रित करता है, ऑब्जेक्ट स्वचालित रूप से फलन के पहले तर्क से जुड़ा होता है। इस प्रकार, विधि (कंप्यूटर प्रोग्रामिंग) का अनिवार्य पहला पैरामीटर के रूप में कार्य करता है <code>दिस</code>; इस पैरामीटर को पारंपरिक रूप से नाम दिया गया है <code>सेल्फ</code>, किन्तु नाम कुछ भी रखा जा सकता है।


कक्षा विधियों में (के साथ बनाया गया <code>classmethod</code> डेकोरेटर), पहला तर्क क्लास ऑब्जेक्ट को ही संदर्भित करता है, और इसे पारंपरिक रूप से कहा जाता है <code>cls</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>staticmethod</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>self</code> उनके पहले पैरामीटर के रूप में। फिर इन फ़ंक्शंस का उपयोग करके कॉल किया जा सकता है <code>instance.method()</code> सिंटैक्स चीनी. उदाहरण के लिए:
रस्ट में, प्रकारों को उनसे जुड़े कार्यों से भिन्न घोषित किया जाता है। पारंपरिक रूप से ऑब्जेक्ट-ओरिएंटेड भाषाओं में इंस्टेंस विधियों के अनुरूप डिज़ाइन किए गए फ़ंक्शंस को स्पष्ट रूप से लिया जाना चाहिए <code>सेल्फ</code> उनके पहले पैरामीटर के रूप में। फिर इन फ़ंक्शंस का उपयोग करके कॉल किया जा सकता है <code>इंस्टैंस.मेथड()</code> सिंटैक्स चीनी. उदाहरण के लिए:


<syntaxhighlight lang="rust>
<syntaxhighlight lang="rust>
Line 110: Line 110:
}
}
</syntaxhighlight>
</syntaxhighlight>
यह प्रकार को परिभाषित करता है, <code>Foo</code>, जिसके चार संबद्ध कार्य हैं। पहला, <code>Foo::new()</code>, इंस्टेंस फलन नहीं है और इसे प्रकार उपसर्ग के साथ निर्दिष्ट किया जाना चाहिए। शेष तीन सभी लेते हैं <code>self</code> विभिन्न तरीकों से पैरामीटर, और इसे a पर कॉल किया जा सकता है <code>Foo</code> उदाहरण के लिए डॉट-नोटेशन सिंटैक्स शुगर का उपयोग किया जाता है, जो स्पष्ट रूप से टाइप-योग्य फलन नाम को कॉल करने के सामान्तर है <code>self</code> पहला पैरामीटर.
यह प्रकार को परिभाषित करता है, <code>फू</code>, जिसके चार संबद्ध कार्य हैं। पहला, <code>फू::न्यू()</code>, इंस्टेंस फलन नहीं है और इसे प्रकार उपसर्ग के साथ निर्दिष्ट किया जाना चाहिए। शेष तीन सभी लेते हैं <code>सेल्फ</code> विभिन्न तरीकों से पैरामीटर, और इसे पर कॉल किया जा सकता है <code>फू</code> उदाहरण के लिए डॉट-नोटेशन सिंटैक्स शुगर का उपयोग किया जाता है, जो स्पष्ट रूप से टाइप-योग्य फलन नाम को कॉल करने के सामान्तर है <code>सेल्फ</code> पहला पैरामीटर.


<syntaxhighlight lang="rust">
<syntaxhighlight lang="rust">
Line 122: Line 122:
</syntaxhighlight>
</syntaxhighlight>
===स्वयं ===
===स्वयं ===
Self (प्रोग्रामिंग भाषा) भाषा का नाम self के इसी प्रयोग के आधार पर रखा गया है।
सेल्फ (प्रोग्रामिंग भाषा) भाषा का नाम सेल्फ के इसी प्रयोग के आधार पर रखा गया है।


=== एक्सबेस++ ===
=== एक्सबेस++ ===
<code>Self</code> किसी वर्ग के तरीकों के भीतर सख्ती से उपयोग किया जाता है।
<code>सेल्फ</code> किसी वर्ग के तरीकों के भीतर सख्ती से उपयोग किया जाता है।


संदर्भित करने का दूसरा प्रणाली <code>Self</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

स्वयं

सेल्फ (प्रोग्रामिंग भाषा) भाषा का नाम सेल्फ के इसी प्रयोग के आधार पर रखा गया है।

एक्सबेस++

सेल्फ किसी वर्ग के तरीकों के भीतर सख्ती से उपयोग किया जाता है।

संदर्भित करने का दूसरा प्रणाली सेल्फ उपयोग करना है ::.

यह भी देखें

संदर्भ

  1. 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]
  2. 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
  3. 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
  4. 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
  5. Mozilla Developer Network: Window.self
  6. Mozilla Developer Network: Web Worker API
  7. Mozilla Developer Network: globalThis
  8. "Programming in Lua : 16".
  9. msdn. "PowerShell: About Automatic Variables". docs.microsoft.com (in English). Retrieved 2018-03-22.
  10. msdn. "about_Classes". docs.microsoft.com (in English). Retrieved 2018-12-17.
  11. Unifying types and classes in Python 2.2, Guido van Rossum, "Overriding the __new__ method"

अग्रिम पठन