AutoHotkey 警告局部变量与全局变量同名

问题描述 投票:0回答:1

每当我尝试从启用了

#warn
的 AutoHotkey 函数访问全局变量时,都会显示一条警告提示,指出我的局部变量与全局变量具有相同的名称。

此警告似乎仅影响功能。从热字符串访问变量不会引发任何警告。

#Warn
myString := "Hello, world!"

DisplayString() {
   MsgBox %myString%   ; Warning: local variable
}

^j::
   MsgBox, %myString%  ; Perfectly valid!
Return

为什么从函数访问全局变量会触发警告?

global-variables autohotkey compiler-warnings
1个回答
6
投票

使用

#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 官方文档

© www.soinside.com 2019 - 2024. All rights reserved.