为什么 #include 打破全局变量?



我有一个简单的.ahk文件,每当我按Esc时,它都会重新加载当前正在运行的脚本。

; reload-hotkey.ahk
Esc::Reload     ; reload script with Esc

出于某种原因,导入此文件会导致全局变量停止正常工作。

; test-file.ahk
#Include %A_ScriptDir%reload-hotkey.ahk    ; This line causes the problem
globalString := "Hello"
^q::
localString := "World"
MsgBox '%globalString% %localString'     ; Output: ' World'
Return

如果我删除我的#include语句,代码将按预期工作。

; test-file-2.ahk
globalString := "Hello"
^q::
localString := "World"
MsgBox '%globalString% %localString%'    ; Output: 'Hello World'
Return

仅当我包含的文件包含热键时,才会发生这种情况。如果函数仅包含方法或函数,则我的代码将按预期工作。

作为参考,我正在使用AutoHotkey Unicode 32位1.1.26.01。

为什么#include语句会导致全局变量无法正常工作?

变量定义必须出现在任何热键或热字符串定义之前。

因此,将变量定义放在包含语句上方。

globalString := "Hello"
#Include %A_ScriptDir%reload-hotkey.ahk    ; This line causes the problem

有关详细信息,请参阅自动热键文档中的自动执行部分。

相关内容

  • 没有找到相关文章

最新更新