AutoHotkey 警告局部变量与全局变量同名
AutoHotkey warns that a local variable has the same name as a global variable
每当我尝试从启用了 #warn
的 AutoHotkey 函数访问全局变量时,都会显示一条警告提示,提示我的局部变量与全局变量同名。
这个警告似乎只影响功能。从热字串访问变量不会引发任何警告。
#Warn
myString := "Hello, world!"
DisplayString() {
MsgBox %myString% ; Warning: local variable
}
^j::
MsgBox, %myString% ; Perfectly valid!
Return
为什么启用警告后我无法从函数访问全局变量?
使用#Warn
时,全局变量应明确声明为全局变量以防止歧义。这可以通过以下三种方式之一完成。
在使用前将变量声明为全局变量
myString := "Hello, world!"
DisplayString()
{
global myString ; specify this variable is global
MsgBox %myString%
}
函数内部假设全局模式
myString := "Hello, world!"
DisplayString()
{
global ; assume global for all variables accessed or created inside this function
MsgBox %myString%
}
使用超全局变量
global myString := "Hello, world!" ; global declarations made outside a function
; apply to all functions by default
DisplayString()
{
MsgBox %myString%
}
有关全局变量的更多信息,refer to the official AutoHotkey documentation。
每当我尝试从启用了 #warn
的 AutoHotkey 函数访问全局变量时,都会显示一条警告提示,提示我的局部变量与全局变量同名。
这个警告似乎只影响功能。从热字串访问变量不会引发任何警告。
#Warn
myString := "Hello, world!"
DisplayString() {
MsgBox %myString% ; Warning: local variable
}
^j::
MsgBox, %myString% ; Perfectly valid!
Return
为什么启用警告后我无法从函数访问全局变量?
使用#Warn
时,全局变量应明确声明为全局变量以防止歧义。这可以通过以下三种方式之一完成。
在使用前将变量声明为全局变量
myString := "Hello, world!"
DisplayString()
{
global myString ; specify this variable is global
MsgBox %myString%
}
函数内部假设全局模式
myString := "Hello, world!"
DisplayString()
{
global ; assume global for all variables accessed or created inside this function
MsgBox %myString%
}
使用超全局变量
global myString := "Hello, world!" ; global declarations made outside a function
; apply to all functions by default
DisplayString()
{
MsgBox %myString%
}
有关全局变量的更多信息,refer to the official AutoHotkey documentation。