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由於我當前的腳本最初並不是作爲庫設計的,因此改進了我的功能下劃線前綴將會很有趣... –