スクリプトは、2 つのパラメーター値をスクリプトの別のインスタンスに渡します。したがって、組み込みパラメーター変数 0 には、渡されたパラメーターの数が含まれます。以下の例では、1 は「C:/Windows」、2 は「/switchtest」です。
関数外の従来の方法 (単一の等号) を使用して、パラメーター値を strParam1 および strParam2 に割り当てることができます。ただし、関数内では、割り当ては失敗します。
:= 記号を使用してループで割り当てられている場合は、機能しているようです。
それはなぜです?誰でもこの動作を説明できますか?
strParam1 = %1%
strParam2 = %2%
msgbox, 64, Outside the Function, number of parameters:%0%`npath: %strParam1%`nswitch: %strParam2%
test_params()
strPath := "C:/Windows"
strSwitch := "/switchtest"
RunWait "%A_AhkPath%" "%A_ScriptFullPath%" "%strPath%" "%strSwitch%"
test_params() {
global 0
; this works
; loop %0%
; strParam%A_Index% := %A_Index%
; this causes an error: "This dynamic variable is blank. If this variable was not intended to be dynamic, remove the % symbols from it."
; strParam1 := %1%
; strParam2 := %2%
; this passes empty values; however, this method works outside the function.
strParam1 = %1%
strParam2 = %2%
msgbox, 64, Inside the Function, number of parameters:%0%`npath: %strParam1%`nswitch: %strParam2%
if strParam2
exitapp
}