स्थानीय चर: Difference between revisions
(minor changes) |
(minor changes) |
||
Line 1: | Line 1: | ||
{{Short description|Computer programming, a variable only usable in a portion of a program (the scope)}} | {{Short description|Computer programming, a variable only usable in a portion of a program (the scope)}} | ||
[[कंप्यूटर विज्ञान]] में, एक | [[कंप्यूटर विज्ञान|संगणक विज्ञान]] में, लोकल वेरिएबल एक प्रकार का [[चर (प्रोग्रामिंग)|वेरिएबल]] होता है जिसे लोकल [[गुंजाइश (प्रोग्रामिंग)|स्कोप]] प्रदान किया जाता है। [[सबरूटीन|फ़ंक्शन]] या [[ब्लॉक (प्रोग्रामिंग)|ब्लॉक]] में एक लोकल वेरिएबल सम्बन्ध जिसमें इसे प्रकटित किया जाता है कि बड़े स्कोप में समान वेरिएबल नाम को ओवरराइड करता है। [[प्रोग्रामिंग भाषा|प्रोग्रामिंग भाषाओं]] में केवल दो स्तरों की दृश्यता के साथ, लोकल वेरिएबल [[वैश्विक चर|ग्लोबल वेरिएबल]] के कृत व्यतिरेक होते हैं। दूसरी ओर, कई [[ALGOL|एएलजीओएल]]-व्युत्पन्न भाषाएँ वैयक्तिक (प्राइवेट) वेरिएबल, फ़ंक्शंस, स्थिरांक और उनके कुछ प्रकारों के साथ, या तो नेस्टेड ब्लॉक या [[नेस्टेड समारोह|नेस्टेड फ़ंक्शंस]] द्वारा, किसी भी संख्या में नेस्टेड स्तर की दृश्यता की अनुमति प्रदान करती हैं। लोकल वेरिएबल [[प्रक्रियात्मक प्रोग्रामिंग|प्रक्रियात्मक (प्रोसेडुरल) प्रोग्रामिंग]] के लिए अत्यन्त महत्वपूर्ण हैं, और अधिक व्यापक रुप से [[मॉड्यूलर प्रोग्रामिंग]]: लोकल स्कोप के वेरिएबल का उपयोग अनुषंगी प्रभाव (साइड-इफेक्ट्स) के साथ समस्याओं से परिवर्जन के लिए किया जाता है जो ग्लोबल वेरिएबल के साथ हो सकते हैं। | ||
== स्कोप == | == स्कोप == | ||
लोकल वेरिएबल्स में एक लेक्सिकल या डायनामिक स्कोप हो सकता है, हालांकि लेक्सिकल (स्टैटिक) स्कोप कहीं अधिक सर्वनिष्ठ या सामान्य है। लेक्सिकल स्कोपिंग (या लेक्सिकल स्कोप; जिसे स्टैटिक स्कोपिंग या स्टैटिक स्कोप भी कहा जाता है) में, यदि एक वैरिएबल नाम का स्कोप एक निश्चित ब्लॉक है, तो इसका स्कोप ब्लॉक डेफिनिशन का प्रोग्राम टेक्स्ट है: उस ब्लॉक के टेक्स्ट के भीतर, वेरिएबल नाम विद्यमान होता है, और वेरिएबल के मान के लिए बाध्य है, परन्तु उस ब्लॉक के टेक्स्ट के बाहर, वैरिएबल नाम विद्यमान नहीं होता है। इसके विपरीत, डायनेमिक स्कोपिंग (या डायनेमिक स्कोप) में, यदि एक वेरिएबल नाम का स्कोप एक निश्चित ब्लॉक है, तो इसका स्कोप वह ब्लॉक होता है और सभी फ़ंक्शंस को उस ब्लॉक द्वारा सकर्मक रूप से सम्बोधित किया जाता है (इसके अतिरिक्त की जब किसी अन्य विज्ञप्ति द्वारा फिर से ओवरराइड किया गया हो); ब्लॉक समाप्त होने के पश्चात, वेरिएबल नाम अस्तित्व में नहीं होता है। कुछ भाषाएँ, जैसे [[पर्ल]] और [[सामान्य लिस्प|कॉमन लिस्प]], प्रोग्रामर को किसी वेरिएबल को निर्धारित या पुनर्निर्धारित करते समय स्टैटिक या डायनेमिक स्कोपिंग के चयन की अनुमति प्रदान करता है। डायनेमिक स्कोपिंग का उपयोग करने वाली भाषाओं के उदाहरणों में सम्मिलित हैं [[लोगो (प्रोग्रामिंग भाषा)|लोगो]], [[Emacs lisp|इमैक्स लिस्प]], और शैल भाषाएँ [[बैश (यूनिक्स शेल)|बैश]], डैश, और मिरबीएसडी कॉर्न शेल ([[mksh]]) की "लोकल" विज्ञप्ति। अधिकांश अन्य भाषाएं लेक्सिकली स्कोप्ड लोकल वेरिएबल्स प्रदान करती हैं। | |||
अधिकांश भाषाओं में, | अधिकांश भाषाओं में, लोकल वेरिएबल [[स्वचालित चर|आटोमेटिक वेरिएबल]] होते हैं जो सीधे [[कॉल स्टैक]] पर संग्रहीत होते हैं। इसका अर्थ यह है कि जब एक प्रतिवर्तन (रिकर्सिव) फ़ंक्शन स्वयं को निर्देशित (कॉल) करता है, अतः फ़ंक्शन के प्रत्येक उदाहरण में लोकल वेरिएबल को अलग-अलग ऐडड्रेस्सेस दिए जाते हैं। इसलिए इस स्कोप के वेरिएबल विज्ञप्ति किए जा सकते हैं, लिखे जा सकते हैं और पढ़े जा सकते हैं, बिना किसी साइड-इफेक्ट्स के उस ब्लॉक के बाहर के फ़ंक्शंस के संकट के बिना जिसमें वे विज्ञप्ति किए गए हैं। | ||
प्रोग्रामिंग | '''प्रोग्रामिंग भाषा जो वैल्यू सिमेंटिक्स''' द्वारा कॉल को नियोजित करती हैं, एक तथाकथित सबरूटीन प्रदान करती हैं, जो इसे पास किए गए तर्कों की अपनी लोकल प्रति के साथ प्रदान करती है। अधिकांश भाषाओं में, इन लोकल मापदंडों को सबरूटीन के भीतर अन्य लोकल वेरिएबल के समान ही माना जाता है। इसके विपरीत, [[संदर्भ द्वारा कॉल करें|कॉल बाय रेफरेंस]] और [[नाम से बुलाओ|कॉल बाय नेम]] सिमेंटिक्स पैरामीटर को तर्कों के रूप में पास किए गए मानों के उपनाम के रूप में फंक्शन करने की अनुमति देता है, जिससे सबरूटीन को अपने स्कोप से बाहर वेरिएबल को संशोधित करने की अनुमति मिलती है। | ||
== स्थिर | == स्थिर लोकल वेरिएबल == | ||
एक विशेष प्रकार का | एक विशेष प्रकार का लोकल वेरिएबल, जिसे स्थिर लोकल कहा जाता है, कई मुख्यधारा की भाषाओं में उपलब्ध है ([[सी (प्रोग्रामिंग भाषा)|C]]/[[सी ++|C++]], [[मूल दृश्य]] और VB.NET सहित) जो फ़ंक्शन के एक कॉल से दूसरे में मान को बनाए रखने की अनुमति देता है - यह लोकल स्कोप वाला एक स्थिर वेरिएबल है। इस मामले में, फ़ंक्शन के लिए प्रतिवर्तन (रिकर्सिव) कॉलों की भी (एकल, स्थिर रूप से <code>static</code> आवंटित) वेरिएबल तक पहुंच होती है। उपरोक्त सभी भाषाओं में, स्थिर वेरिएबल को एक विशेष भंडारण वर्ग कीवर्ड (जैसे, स्थिर) के साथ विज्ञप्ति किया जाता है। | ||
ग्लोबल फ़ंक्शंस में स्थिर लोकल लोगों का जीवनकाल स्थिर ग्लोबल वेरिएबल के समान होता है, क्योंकि उनका मूल्य फंक्शनक्रम के जीवन के लिए स्मृति में रहता है,<ref>{{cite web|url= http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1256.pdf |title=वर्तमान सी मानक}} {{छोटा|(3.61 MB)}} ({{As of|2009|lc=on}}). In particular, see section 6.2.4 “Storage durations of objects”, page 32.</ref> परन्तु स्वचालित लोकल वेरिएबल के साथ फंक्शन क्षेत्र (ग्लोबल स्कोप नहीं) होता है। | |||
यह स्थिर कीवर्ड के अन्य उपयोगों से अलग है, जिसके विभिन्न भाषाओं में कई अलग-अलग अर्थ हैं।<code>static</code> | यह स्थिर कीवर्ड के अन्य उपयोगों से अलग है, जिसके विभिन्न भाषाओं में कई अलग-अलग अर्थ हैं।<code>static</code> | ||
== पर्ल में | == पर्ल में लोकल वेरिएबल == | ||
पर्ल डायनेमिक और लेक्सिकली-स्कोप्ड लोकल वेरिएबल्स दोनों का समर्थन करता है। कीवर्ड <code>local</code> का उपयोग | पर्ल डायनेमिक और लेक्सिकली-स्कोप्ड लोकल वेरिएबल्स दोनों का समर्थन करता है। कीवर्ड <code>local</code> का उपयोग लोकल डायनामिक-स्कोप्ड वेरिएबल्स को परिभाषित करने के लिए किया जाता है, जबकि <code>my</code> का उपयोग लोकल लेक्सिकली-स्कोप्ड वेरिएबल्स के लिए किया जाता है। चूंकि डायनेमिक स्कोपिंग आज कम आम है, पर्ल प्रलेखन चेतावनी देता है कि "<code>local</code>वह नहीं है जिसे ज्यादातर लोग" लोकल "के रूप में सोचते हैं।"<ref>[http://perldoc.perl.org/functions/local.html perldoc.perl.org: local]</ref> इसके बजाय, <code>local</code> कीवर्ड एक ग्लोबल (पैकेज) वेरिएबल के लिए एक अस्थायी, डायनेमिक रूप से स्कोप वाला मान देता है, जो संलग्न ब्लॉक के अंत तक रहता है। हालांकि, वेरिएबल ब्लॉक के भीतर से बुलाए गए किसी भी फ़ंक्शन के लिए दृश्यमान है।<ref>[http://perldoc.perl.org/perlsub.html#Temporary-Values-via-local() perldoc.perl.org: perlsub: Temporary Values via <code>local()</code>]</ref> शब्दावली-स्कोप वाले लोकल वेरिएबल बनाने के लिए, इसके बजाय <code>my</code> ऑपरेटर का उपयोग करें।<ref>[http://perldoc.perl.org/perlsub.html#Private-Variables-via-my() perldoc.perl.org: perlsub: Private Variables via <code>my()</code>]</ref> | ||
यह समझने के लिए कि यह कैसे काम करता है, निम्नलिखित कोड पर विचार करें:<syntaxhighlight lang="perl"> | यह समझने के लिए कि यह कैसे काम करता है, निम्नलिखित कोड पर विचार करें:<syntaxhighlight lang="perl"> | ||
Line 36: | Line 36: | ||
2 | 2 | ||
1 | 1 | ||
ऐसा इसलिए होता है क्योंकि | ऐसा इसलिए होता है क्योंकि ग्लोबल वेरिएबल $a को {{code|f()}} के अंदर एक नए अस्थायी (लोकल) अर्थ में संशोधित किया गया है, परन्तु {{code|f()}} के स्कोप को छोड़ने पर ग्लोबल मान को पुनर्स्थापित किया जाता है। | ||
<code>local</code> के बजाय इस मामले में <code>my</code> का उपयोग करने से 1 तीन बार प्रिंट होता है क्योंकि उस स्थिति में <code>$a</code> | <code>local</code> के बजाय इस मामले में <code>my</code> का उपयोग करने से 1 तीन बार प्रिंट होता है क्योंकि उस स्थिति में <code>$a</code> वेरिएबल फ़ंक्शन {{code|f()}} के स्थिर स्कोप तक सीमित होगा और {{code|g()}} द्वारा नहीं देखा जाएगा। | ||
Randal L. Schwartz और टॉम फीनिक्स का तर्क है कि ऑपरेटर <code>local</code> का एक अलग नाम होना चाहिए था जैसे <code>save</code>।<ref>{{cite book|author=Randal L. Schwartz and Tom Phoenix|title=लर्निंग पर्ल तीसरा संस्करण|at=paragraph 4.7|publisher=O'REILLY|date=2001-07-01|ISBN=0-596-00132-0|url=https://archive.org/details/learningperl00schw}}</ref> | Randal L. Schwartz और टॉम फीनिक्स का तर्क है कि ऑपरेटर <code>local</code> का एक अलग नाम होना चाहिए था जैसे <code>save</code>।<ref>{{cite book|author=Randal L. Schwartz and Tom Phoenix|title=लर्निंग पर्ल तीसरा संस्करण|at=paragraph 4.7|publisher=O'REILLY|date=2001-07-01|ISBN=0-596-00132-0|url=https://archive.org/details/learningperl00schw}}</ref> | ||
== रूबी में | == रूबी में लोकल वेरिएबल == | ||
[[रूबी (प्रोग्रामिंग भाषा)|रूबी]] एक भाषा के रूप में पर्ल से भी प्रेरित थी, | [[रूबी (प्रोग्रामिंग भाषा)|रूबी]] एक भाषा के रूप में पर्ल से भी प्रेरित थी, परन्तु इस मामले में, संकेतन को सरल बनाया गया था: एक ग्लोबल वेरिएबल नाम $ चिह्न से पहले होना चाहिए, जैसे $ वेरिएबल_नाम, जबकि एक <code>$variable_name</code> के पास इसके नाम के सामने कोई $ चिह्न नहीं है, जैसे कि <code>variable_name</code> (जबकि पर्ल में सभी स्केलर मानों के सामने $ होता है)। ध्यान दें कि रूबी केवल पर्ल के <code>my</code>जैसे स्टेटिकली-स्कोप्ड लोकल वेरिएबल्स के लिए बिल्ट-इन सपोर्ट प्रदान करती है, पर्ल के <code>local</code>जैसे डायनामिक-स्कोप्ड लोकल वेरिएबल्स के लिए नहीं। रुबी के लिए कम से कम एक लाइब्रेरी है जो डायनेमिक रूप से स्कोप वाले वेरिएबल प्रदान करती है।<ref> | ||
Conrad Irwin. | Conrad Irwin. | ||
"LSpace: Dynamic scope for Ruby". | "LSpace: Dynamic scope for Ruby". | ||
Line 53: | Line 53: | ||
== यह भी देखें == | == यह भी देखें == | ||
* | * ग्लोबल वेरिएबल | ||
* [[गैर-स्थानीय चर]] | * [[गैर-स्थानीय चर|गैर-लोकल वेरिएबल]] | ||
==संदर्भ== | ==संदर्भ== | ||
<references /> | <references /> |
Revision as of 19:32, 21 December 2022
संगणक विज्ञान में, लोकल वेरिएबल एक प्रकार का वेरिएबल होता है जिसे लोकल स्कोप प्रदान किया जाता है। फ़ंक्शन या ब्लॉक में एक लोकल वेरिएबल सम्बन्ध जिसमें इसे प्रकटित किया जाता है कि बड़े स्कोप में समान वेरिएबल नाम को ओवरराइड करता है। प्रोग्रामिंग भाषाओं में केवल दो स्तरों की दृश्यता के साथ, लोकल वेरिएबल ग्लोबल वेरिएबल के कृत व्यतिरेक होते हैं। दूसरी ओर, कई एएलजीओएल-व्युत्पन्न भाषाएँ वैयक्तिक (प्राइवेट) वेरिएबल, फ़ंक्शंस, स्थिरांक और उनके कुछ प्रकारों के साथ, या तो नेस्टेड ब्लॉक या नेस्टेड फ़ंक्शंस द्वारा, किसी भी संख्या में नेस्टेड स्तर की दृश्यता की अनुमति प्रदान करती हैं। लोकल वेरिएबल प्रक्रियात्मक (प्रोसेडुरल) प्रोग्रामिंग के लिए अत्यन्त महत्वपूर्ण हैं, और अधिक व्यापक रुप से मॉड्यूलर प्रोग्रामिंग: लोकल स्कोप के वेरिएबल का उपयोग अनुषंगी प्रभाव (साइड-इफेक्ट्स) के साथ समस्याओं से परिवर्जन के लिए किया जाता है जो ग्लोबल वेरिएबल के साथ हो सकते हैं।
स्कोप
लोकल वेरिएबल्स में एक लेक्सिकल या डायनामिक स्कोप हो सकता है, हालांकि लेक्सिकल (स्टैटिक) स्कोप कहीं अधिक सर्वनिष्ठ या सामान्य है। लेक्सिकल स्कोपिंग (या लेक्सिकल स्कोप; जिसे स्टैटिक स्कोपिंग या स्टैटिक स्कोप भी कहा जाता है) में, यदि एक वैरिएबल नाम का स्कोप एक निश्चित ब्लॉक है, तो इसका स्कोप ब्लॉक डेफिनिशन का प्रोग्राम टेक्स्ट है: उस ब्लॉक के टेक्स्ट के भीतर, वेरिएबल नाम विद्यमान होता है, और वेरिएबल के मान के लिए बाध्य है, परन्तु उस ब्लॉक के टेक्स्ट के बाहर, वैरिएबल नाम विद्यमान नहीं होता है। इसके विपरीत, डायनेमिक स्कोपिंग (या डायनेमिक स्कोप) में, यदि एक वेरिएबल नाम का स्कोप एक निश्चित ब्लॉक है, तो इसका स्कोप वह ब्लॉक होता है और सभी फ़ंक्शंस को उस ब्लॉक द्वारा सकर्मक रूप से सम्बोधित किया जाता है (इसके अतिरिक्त की जब किसी अन्य विज्ञप्ति द्वारा फिर से ओवरराइड किया गया हो); ब्लॉक समाप्त होने के पश्चात, वेरिएबल नाम अस्तित्व में नहीं होता है। कुछ भाषाएँ, जैसे पर्ल और कॉमन लिस्प, प्रोग्रामर को किसी वेरिएबल को निर्धारित या पुनर्निर्धारित करते समय स्टैटिक या डायनेमिक स्कोपिंग के चयन की अनुमति प्रदान करता है। डायनेमिक स्कोपिंग का उपयोग करने वाली भाषाओं के उदाहरणों में सम्मिलित हैं लोगो, इमैक्स लिस्प, और शैल भाषाएँ बैश, डैश, और मिरबीएसडी कॉर्न शेल (mksh) की "लोकल" विज्ञप्ति। अधिकांश अन्य भाषाएं लेक्सिकली स्कोप्ड लोकल वेरिएबल्स प्रदान करती हैं।
अधिकांश भाषाओं में, लोकल वेरिएबल आटोमेटिक वेरिएबल होते हैं जो सीधे कॉल स्टैक पर संग्रहीत होते हैं। इसका अर्थ यह है कि जब एक प्रतिवर्तन (रिकर्सिव) फ़ंक्शन स्वयं को निर्देशित (कॉल) करता है, अतः फ़ंक्शन के प्रत्येक उदाहरण में लोकल वेरिएबल को अलग-अलग ऐडड्रेस्सेस दिए जाते हैं। इसलिए इस स्कोप के वेरिएबल विज्ञप्ति किए जा सकते हैं, लिखे जा सकते हैं और पढ़े जा सकते हैं, बिना किसी साइड-इफेक्ट्स के उस ब्लॉक के बाहर के फ़ंक्शंस के संकट के बिना जिसमें वे विज्ञप्ति किए गए हैं।
प्रोग्रामिंग भाषा जो वैल्यू सिमेंटिक्स द्वारा कॉल को नियोजित करती हैं, एक तथाकथित सबरूटीन प्रदान करती हैं, जो इसे पास किए गए तर्कों की अपनी लोकल प्रति के साथ प्रदान करती है। अधिकांश भाषाओं में, इन लोकल मापदंडों को सबरूटीन के भीतर अन्य लोकल वेरिएबल के समान ही माना जाता है। इसके विपरीत, कॉल बाय रेफरेंस और कॉल बाय नेम सिमेंटिक्स पैरामीटर को तर्कों के रूप में पास किए गए मानों के उपनाम के रूप में फंक्शन करने की अनुमति देता है, जिससे सबरूटीन को अपने स्कोप से बाहर वेरिएबल को संशोधित करने की अनुमति मिलती है।
स्थिर लोकल वेरिएबल
एक विशेष प्रकार का लोकल वेरिएबल, जिसे स्थिर लोकल कहा जाता है, कई मुख्यधारा की भाषाओं में उपलब्ध है (C/C++, मूल दृश्य और VB.NET सहित) जो फ़ंक्शन के एक कॉल से दूसरे में मान को बनाए रखने की अनुमति देता है - यह लोकल स्कोप वाला एक स्थिर वेरिएबल है। इस मामले में, फ़ंक्शन के लिए प्रतिवर्तन (रिकर्सिव) कॉलों की भी (एकल, स्थिर रूप से static
आवंटित) वेरिएबल तक पहुंच होती है। उपरोक्त सभी भाषाओं में, स्थिर वेरिएबल को एक विशेष भंडारण वर्ग कीवर्ड (जैसे, स्थिर) के साथ विज्ञप्ति किया जाता है।
ग्लोबल फ़ंक्शंस में स्थिर लोकल लोगों का जीवनकाल स्थिर ग्लोबल वेरिएबल के समान होता है, क्योंकि उनका मूल्य फंक्शनक्रम के जीवन के लिए स्मृति में रहता है,[1] परन्तु स्वचालित लोकल वेरिएबल के साथ फंक्शन क्षेत्र (ग्लोबल स्कोप नहीं) होता है।
यह स्थिर कीवर्ड के अन्य उपयोगों से अलग है, जिसके विभिन्न भाषाओं में कई अलग-अलग अर्थ हैं।static
पर्ल में लोकल वेरिएबल
पर्ल डायनेमिक और लेक्सिकली-स्कोप्ड लोकल वेरिएबल्स दोनों का समर्थन करता है। कीवर्ड local
का उपयोग लोकल डायनामिक-स्कोप्ड वेरिएबल्स को परिभाषित करने के लिए किया जाता है, जबकि my
का उपयोग लोकल लेक्सिकली-स्कोप्ड वेरिएबल्स के लिए किया जाता है। चूंकि डायनेमिक स्कोपिंग आज कम आम है, पर्ल प्रलेखन चेतावनी देता है कि "local
वह नहीं है जिसे ज्यादातर लोग" लोकल "के रूप में सोचते हैं।"[2] इसके बजाय, local
कीवर्ड एक ग्लोबल (पैकेज) वेरिएबल के लिए एक अस्थायी, डायनेमिक रूप से स्कोप वाला मान देता है, जो संलग्न ब्लॉक के अंत तक रहता है। हालांकि, वेरिएबल ब्लॉक के भीतर से बुलाए गए किसी भी फ़ंक्शन के लिए दृश्यमान है।[3] शब्दावली-स्कोप वाले लोकल वेरिएबल बनाने के लिए, इसके बजाय my
ऑपरेटर का उपयोग करें।[4]
यह समझने के लिए कि यह कैसे काम करता है, निम्नलिखित कोड पर विचार करें:
$a = 1;
sub f() {
local $a;
$a = 2;
g();
}
sub g() {
print "$a\n";
}
g();
f();
g();
यह आउटपुट करेगा:
1 2 1
ऐसा इसलिए होता है क्योंकि ग्लोबल वेरिएबल $a को f()
के अंदर एक नए अस्थायी (लोकल) अर्थ में संशोधित किया गया है, परन्तु f()
के स्कोप को छोड़ने पर ग्लोबल मान को पुनर्स्थापित किया जाता है।
local
के बजाय इस मामले में my
का उपयोग करने से 1 तीन बार प्रिंट होता है क्योंकि उस स्थिति में $a
वेरिएबल फ़ंक्शन f()
के स्थिर स्कोप तक सीमित होगा और g()
द्वारा नहीं देखा जाएगा।
Randal L. Schwartz और टॉम फीनिक्स का तर्क है कि ऑपरेटर local
का एक अलग नाम होना चाहिए था जैसे save
।[5]
रूबी में लोकल वेरिएबल
रूबी एक भाषा के रूप में पर्ल से भी प्रेरित थी, परन्तु इस मामले में, संकेतन को सरल बनाया गया था: एक ग्लोबल वेरिएबल नाम $ चिह्न से पहले होना चाहिए, जैसे $ वेरिएबल_नाम, जबकि एक $variable_name
के पास इसके नाम के सामने कोई $ चिह्न नहीं है, जैसे कि variable_name
(जबकि पर्ल में सभी स्केलर मानों के सामने $ होता है)। ध्यान दें कि रूबी केवल पर्ल के my
जैसे स्टेटिकली-स्कोप्ड लोकल वेरिएबल्स के लिए बिल्ट-इन सपोर्ट प्रदान करती है, पर्ल के local
जैसे डायनामिक-स्कोप्ड लोकल वेरिएबल्स के लिए नहीं। रुबी के लिए कम से कम एक लाइब्रेरी है जो डायनेमिक रूप से स्कोप वाले वेरिएबल प्रदान करती है।[6]
यह भी देखें
- ग्लोबल वेरिएबल
- गैर-लोकल वेरिएबल
संदर्भ
- ↑ "वर्तमान सी मानक" (PDF). Template:छोटा (as of 2009[update]). In particular, see section 6.2.4 “Storage durations of objects”, page 32.
- ↑ perldoc.perl.org: local
- ↑ perldoc.perl.org: perlsub: Temporary Values via
local()
- ↑ perldoc.perl.org: perlsub: Private Variables via
my()
- ↑ Randal L. Schwartz and Tom Phoenix (2001-07-01). लर्निंग पर्ल तीसरा संस्करण. O'REILLY. paragraph 4.7. ISBN 0-596-00132-0.
- ↑ Conrad Irwin. "LSpace: Dynamic scope for Ruby". December 2012 http://cirw.in/blog/lspace Retrieved 2013-10-16.