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
Run Code Online (Sandbox Code Playgroud)
运行代码,结果是:
"The global variable value is . The local variable value is asdf."
Run Code Online (Sandbox Code Playgroud)
该文件规定:
变量范围和声明:除函数中的局部变量外,所有变量都是全局变量; 也就是说,脚本的任何部分都可以读取或更改其内容.
为什么我的全局变量在函数中没有范围?
Hon*_*Abe 10
全局变量的文档可以在这里找到:https:
//autohotkey.com/docs/Functions.htm#Global
全局变量
要引用函数内的现有全局变量(或创建新变量),请在使用之前将变量声明为全局变量.例如:
LogToFile(TextToLog)
{
global LogFileName
FileAppend, %TextToLog%`n, %LogFileName%
}
Run Code Online (Sandbox Code Playgroud)
我相信AHK的全球概念与其他语言略有不同.使用AHK,您可以创建变量并在多个热键和子例程中使用它,而无需将其声明为全局变量.
Gv := 0
f1::SetTimer, Action, % (on:=!on) ? (1000) : ("Off")
Action:
Gv++
trayTip,, % Gv
Return
f2::Msgbox, % Gv
Run Code Online (Sandbox Code Playgroud)
解释代码:
Action每1000毫秒. % 开始表达. on:=!onon每次F1按下时都会反转变量的二进制值. ?: 一起被称为三元运算符. 1000ms; 当开启= 0时,定时器开启Off. 的++ 操作者加1可变提起笔.
这使事情变得容易:
https://www.autohotkey.com/docs/Functions.htm#SuperGlobal
超全局变量[v1.1.05 +]:如果全局声明出现在任何函数之外,则默认情况下它将对所有函数生效(不包括强制局部函数)。这样避免了在每个函数中重新声明变量的需要。但是,如果声明了具有相同名称的函数参数或局部变量,则它优先于全局变量。由class关键字创建的变量也是超全局变量。
只需在主脚本中将变量声明为全局变量即可:
global supposedlyGlobalVariable := "blah"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8689 次 |
| 最近记录: |