代码之家  ›  专栏  ›  技术社区  ›  Stevoisiak

为什么#包含打破全局变量?

  •  1
  • Stevoisiak  · 技术社区  · 7 年前

    我有一个简单的 .ahk 电子稳定控制系统 .

    ; 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
    

    作为参考,我使用的是自动热键Unicode 32位1.1.26.01。

    为什么一个 #包括

    1 回复  |  直到 7 年前
        1
  •  2
  •   Jim U    7 年前

    因此,将变量定义放在include语句之上。

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

    Auto-execute Section