मुझे एक विधि में एक वैरिएबल में एक मान को स्टोर करने की आवश्यकता है और फिर मुझे उस वैरिएबल से उस वैल्यू को किसी अन्य विधि या क्लोजर में उपयोग करने की आवश्यकता है। मैं इस मूल्य को कैसे साझा कर सकता हूं?मैं ग्रोवी में वैश्विक चर कैसे बना सकता हूं और एक्सेस कर सकता हूं?
उत्तर
बस वर्ग या स्क्रिप्ट स्कोप पर चर घोषित करें, फिर इसे अपने तरीकों या बंदियों के अंदर से एक्सेस करें। उदाहरण के बिना, हालांकि आपकी विशेष समस्या के लिए और अधिक विशिष्ट होना मुश्किल है।
हालांकि, वैश्विक चर को आम तौर पर खराब रूप माना जाता है।
वैरिएबल को एक फ़ंक्शन से वापस क्यों न करें, फिर इसे अगले में पास करें?
सभी ओओ भाषाओं की तरह, ग्रोवी के पास "वैश्विक" की कोई अवधारणा नहीं है (विपरीत, कहें, बेसिक, पायथन या पर्ल)।
आप कई तरीकों का एक ही चर साझा करने की आवश्यकता है कि एक क्षेत्र का उपयोग किया है, तो:
class Globals {
static String ouch = "I'm global.."
}
println Globals.ouch
समझ नहीं सका कि आप क्या चाहते हैं, लेकिन आप कुछ इस तरह की जरूरत है? :
def a = { b -> b = 1 }
bValue = a()
println b // prints 1
अब bValue
जो बंद a
में एक चर है b
का मान है। अब आप bValue
के साथ कुछ भी कर सकते हैं मुझे बताएं कि क्या मैंने आपके प्रश्न को गलत समझा है
ग्रोवी लिपि में स्कोपिंग अपेक्षा से अलग हो सकती है। ऐसा इसलिए है क्योंकि एक ग्रोवी स्क्रिप्ट एक ऐसी विधि है जिसमें कोड चलाया जाएगा, लेकिन यह सब रनटाइम किया जाता है। हम प्रकार परिभाषा को छोड़कर या ग्रोवी 1.8 में स्क्रिप्ट पर स्केल किए जाने के लिए एक चर को परिभाषित कर सकते हैं, हम @ फ़ील्ड एनोटेशन जोड़ सकते हैं।
import groovy.transform.Field
var1 = 'var1'
@Field String var2 = 'var2'
def var3 = 'var3'
void printVars() {
println var1
println var2
println var3 // This won't work, because not in script scope.
}
मुझे लगता है कि आप कक्षा स्तर चर के बारे में बात कर रहे हैं। वैश्विक चर/वर्ग स्तर चर का उपयोग कर ऊपर वर्णित अनुसार एक अच्छा अभ्यास नहीं है।
यदि आप वास्तव में इसका उपयोग करना चाहते हैं। और यदि आप सुनिश्चित हैं कि प्रभाव नहीं होगा ...
विधि के बाहर किसी भी चरणीय घोषित करें। बाहर चर प्रकार के साथ श्रेणी स्तर पर
जैसे:
{
method()
{
a=10
print(a)
}
// def a or int a wont work
a=0
}
यह एक साफ दृष्टिकोण नहीं हो सकता है, लेकिन यह काम करता है;) धन्यवाद। –
def sum = 0
// This method stores a value in a global variable.
def add =
{
input1 , input2 ->
sum = input1 + input2;
}
// This method uses stored value.
def multiplySum =
{
input1 ->
return sum*input1;
}
add(1,2);
multiplySum(10);
def iamnotglobal=100 // This will not be accessible inside the function
iamglobal=200 // this is global and will be even available inside the
def func()
{
log.info "My value is 200. Here you see " + iamglobal
iamglobal=400
//log.info "if you uncomment me you will get error. Since iamnotglobal cant be printed here " + iamnotglobal
}
def func2()
{
log.info "My value was changed inside func to 400 . Here it is = " + iamglobal
}
func()
func2()
यहाँ
iamglobal चर एक वैश्विक समारोह और फिर से इस्तेमाल किया चर फिर से उपलब्ध है func2 को
- 1. मैं वैश्विक चर के बिना डेटा कैसे बना सकता हूं?
- 2. मैं MATLAB में वैश्विक चर कैसे सूचीबद्ध कर सकता हूं?
- 3. मैं एलएलवीएम में वैश्विक चर कैसे घोषित कर सकता हूं?
- 4. मैं केकेपीएचपी में सत्र डेटा कैसे बना सकता हूं, लिख सकता हूं और पढ़ सकता हूं?
- 5. मैं डीएलएल में वैश्विक अपवाद हैंडलर कैसे बना सकता हूं?
- 6. मैं स्फिंक्स में वैश्विक भूमिका/भूमिका कैसे बना सकता हूं?
- 7. मैं आईओएस विकास में वैश्विक चर कैसे बचा सकता हूं?
- 8. मैं WPF में वैश्विक एप्लिकेशन चर कैसे सहेज सकता हूं?
- 9. मैं एमएस एक्सेस में संग्रहीत प्रक्रिया कैसे बना सकता हूं?
- 10. मैं पर्ल क्लास कैसे बना सकता हूं?
- 11. मैं वैश्विक नेविगेशन स्टैक कैसे बना सकता हूं?
- 12. मैं आर में डमी चर कैसे बना सकता हूं?
- 13. क्या मैं SQL सर्वर में वैश्विक फ़ंक्शन बना सकता हूं?
- 14. क्या मैं डॉक्सिजन में वैश्विक todo सूची बना सकता हूं?
- 15. मैं ग्रोवी में एक संदर्भ बराबर कैसे कर सकता हूं?
- 16. मैं स्ट्रिंग को कैसे बना सकता हूं?
- 17. ओरेकल 11 जी में मैं कई डेटाबेस कैसे बना और एक्सेस कर सकता हूं?
- 18. पोस्टग्रेस्क्ल में: मैं एक साधारण काउंटर कैसे बना सकता हूं जिसे मैं रीसेट कर सकता हूं?
- 19. क्या मैं गैर-भाषा आधारित वैश्विक .resx बना सकता हूं?
- 20. एक्सएसएलटी: क्या मैं वैश्विक स्तर पर एक चर घोषित कर सकता हूं और बाद में इसे मान सकता हूं
- 21. मैं पहले (rspec) में मेटाडेटा कैसे एक्सेस कर सकता हूं?
- 22. क्या मैं .config फ़ाइल बना सकता हूं और इसे web.config में शामिल कर सकता हूं?
- 23. जावास्क्रिप्ट का उपयोग करके मैं div कैसे बना सकता हूं और शैली बना सकता हूं?
- 24. मैं "कस्टम प्रोटोकॉल" कैसे बना सकता हूं और इसे किसी एप्लिकेशन पर मैप कर सकता हूं?
- 25. मैं .NET मेटाडाटा-केवल 'संदर्भ असेंबली' कैसे बना सकता हूं और उपयोग कर सकता हूं?
- 26. मैं अपना खुद का हायर कैस्केड कैसे बना सकता हूं और इसे लागू कर सकता हूं?
- 27. क्या मैं स्मृति में कुछ भी एक्सेस कर सकता हूं?
- 28. मैं एक योजनाबद्ध दृश्य कैसे बना सकता हूं जिस पर मैं आइटम रख सकता हूं, स्थानांतरित कर सकता हूं और कनेक्ट कर सकता हूं?
- 29. मैं कस्टम वैश्विक gitconfig पथ कैसे निर्दिष्ट कर सकता हूं?
- 30. मैं लॉकलेस कतार कैसे बना सकता हूं?
क्या होगा यदि मैं वेरिएबल का उपयोग करना चाहता हूं जिसका मूल्य assig किया गया है एक बंद के भीतर ned? उदा।: मैंने स्क्रिप्ट की शुरुआत में एक = शून्य खो दिया है। अब अंदर एक बंद, एक = 'कुछ स्ट्रिंग' का मान असाइन किया गया है। मैं चाहता हूं कि यह नया मूल्य अन्य सभी बंदियों तक पहुंच योग्य हो। धन्यवाद – OK999
वास्तव में? जब आप इसे –
को आजमाकर ठीक करना चाहते हैं तो आप खुद से नफरत करेंगे, मैंने एक बंद करने का अंत किया है जो वांछित गणना मूल्य लौटाता है और इसका उपयोग उस ग्रोवी 1 में नई सामग्री का उपयोग करने के लिए – OK999