1
TL:DR;我无法将热键内的变量声明为本地,这意味着temp
和index
可以全局访问。如何在AutoHotkey中的快捷键中声明局部变量?
我最近发现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
的问题。使用进口时
#warn
^j::
index = 42 ; This *index* variable is global
Return
UnrelatedFunction() {
for index in myArray { ; This *index* variable is local
MsgBox % myArray[index]
}
}
这尤其成为一个问题,因为:除非我记得使用唯一的变量名称为我的每一个for循环中,我遇到了以下错误:
Warning: This local variable has same name as a global variable. (Specifically: index)
例如我自己的脚本中的变量经常与我导入的脚本中的变量冲突。
理想情况下,我可以在任何for-loops之前放置一个本地声明,但如前所示,我无法在热键中执行此操作。
是否可以在热键内声明一个变量为local?
任何有关只使用一个热键的脚本命名函数的建议?像MainFucntion()这样的东西会不会成为好习惯? –
从https://autohotkey.com/docs/Functions.htm#lib开始,策略是在包含它的文件之后命名该函数 - 这可以防止(有点)命名空间冲突。当然,这只是重新暴露了OP正在讨论的名称空间问题,只是用函数名称而不是变量名称:) –
@DewiMorgan由于我当前的脚本最初并不是作为库设计的,因此改进了我的功能下划线前缀将会很有趣... –