2012-04-17 23 views
6
supposedlyGlobalVariable := "blah" 

ARoutine() 
{ 
    localVariable := "asdf" 
    MsgBox, The global variable value is %supposedlyGlobalVariable%. The local variable value is %localVariable%. 
} 


^!X:: ;This assigns the hotkey CTRL + ALT + X to run the routine 
ARoutine() 
return 

भागो कोड नहीं है और परिणाम है:वैश्विक चर वैश्विक क्षेत्र

"The global variable value is . The local variable value is asdf." 

documentation कहता है:

चर गुंजाइश और घोषणाओं: स्थानीय के अपवाद के साथ कार्यों में चर, सभी चर वैश्विक हैं; यानी, उनकी सामग्री स्क्रिप्ट के किसी भी द्वारा पढ़ या परिवर्तित हो सकती है।

मेरे वैश्विक चर के फ़ंक्शन के भीतर दायरा क्यों नहीं है?

उत्तर

9

वैश्विक चर के लिए प्रलेखन यहां पाया जा सकता:
https://autohotkey.com/docs/Functions.htm#Global

वैश्विक चर

एक समारोह के अंदर एक मौजूदा वैश्विक चर का उल्लेख करने के लिए (या एक नया बनाने एक), वैरिएबल को इसका उपयोग करने से पहले ग्लोबल घोषित करें। उदाहरण के लिए:

LogToFile(TextToLog) 
{ 
    global LogFileName 
    FileAppend, %TextToLog%`n, %LogFileName% 
} 

मैं वैश्विक की अवधारणा का मानना ​​है, Ahk साथ, अन्य भाषाओं की तुलना में थोड़ा अलग है। एएचके के साथ आप एक चर बना सकते हैं और इसे कई हॉटकी और सबराउटिन के भीतर उपयोग कर सकते हैं, इसे वैश्विक के रूप में घोषित किए बिना। कोड की

Gv := 0 

f1::SetTimer, Action, % (on:=!on) ? (1000) : ("Off") 

Action: 
    Gv++ 
    trayTip,, % Gv 
Return 

f2::Msgbox, % Gv 

Explaination: Action हर 1000 एमएस:

  • एफ 1 कुंजी सबरूटीन को चलाने के लिए एक टाइमर टॉगल करता है।
  • % एक अभिव्यक्ति शुरू करता है।
  • on:=!on परिवर्तनीय on के बाइनरी मान को हर बार F1 दबाया जाता है।
  • ?: एक साथ टर्नरी ऑपरेटर कहा जाता है।
  • जब = 1 देरी 1000 एमएस पर सेट की जाती है; जब = 0 टाइमर Off चालू हो जाता है।

++ ऑपरेटर 1 परिवर्तनीय जीवी जोड़ता है।

+0

यह प्रतिद्वंद्वी है। यदि कोई चर वैश्विक है, लेकिन फ़ंक्शन के अंदर नहीं है ... तो यह संशोधक की आवश्यकता के बिना वैश्विक कहां है? –

+0

@ P.Brian.Mackey मैंने आपकी टिप्पणी को संबोधित करने के प्रयास में अपना उत्तर अपडेट कर दिया है। –

0

पी। ब्रायन, यह काम करता है जब यह करता है .. मुझे पता है कि यह क्यों समझाता है, लेकिन यह आपका कामकाज हो सकता है।

#Persistent 
GlobalVariable = "blah" 
RETURN 

ARoutine: 
{ 
    localVariable := "asdf" 
    MsgBox, The global variable value is %GlobalVariable%. The local variable value is %localVariable%. 
} 
Return 

^!X:: ;This assigns the hotkey CTRL + ALT + X to run the routine 
gosub, ARoutine 
return 
संबंधित मुद्दे