Autohotkey警告说,本地变量具有与全局变量相同的名称



我每当我尝试使用启用#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%
}

有关全局变量的更多信息,请参阅官方Autohotkey文档。

相关内容

  • 没有找到相关文章

最新更新