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

时间:2017-08-23 13:15:29

标签: include global-variables autohotkey

我有一个简单的.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语句会导致全局变量无法正常工作?

1 个答案:

答案 0 :(得分:1)

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

所以把变量定义放在include语句之上。

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

有关详细信息,请参阅Autohotkey文档中的Auto-execute Section