如何在AutoHotkey中的热键中声明局部变量?

时间:2017-08-30 18:47:05

标签: scope autohotkey local-variables

TL:DR;我无法将热键中的变量声明为本地变量,这意味着tempindex可以全局访问。

我最近发现local variables不能在热键中声明为本地,或者在for-loop中用作参数。

^j::
   local temp = Hello, world!  ; Error: This line does not contain a recognized action
Return

SampleFunction() {
   for local temp in myArray {  ; Error: Variable name contains an illegal character
      ; do stuff
   }
}

这已成为启用#warn的问题。除非我记得为每个for循环使用唯一变量名,否则我会遇到以下错误:

  

警告:此局部变量与全局变量同名。(特别是:索引)

例如:

#warn

^j::
   index = 42  ; This *index* variable is global
Return

UnrelatedFunction() {
   for index in myArray {  ; This *index* variable is local
      MsgBox % myArray[index] 
   }
}

特别是在使用导入时会出现问题,因为我自己脚本中的变量经常与我导入的脚本中的变量冲突。

理想情况下,我可以在任何for循环之前放置一个本地声明,但如前所示,我无法在热键中执行此操作。

是否可以在热键中将变量声明为本地?

1 个答案:

答案 0 :(得分:4)

I implement my hotkeys with functions. Variables within functions have by default local scope unless they are declared C:\Program Files (x86)\Microsoft SQL Server\100\SDK\Assemblies

document.getElementsByClassName("yt-uix-expander-collapsed")[0].classList.remove("yt-uix-expander-collapsed");