Send C gehört nicht zum Code von
2:: und ist grundsätzlich unerreichbar.
Wie swagfag zitiert, bei einzeiligen Hotkey-definitionen gilt:
Wenn ein Hotkey allerdings nur eine einzige Zeile ausführen muss, kann diese Zeile rechts neben dem Doppelpunkt-Paar geschrieben werden. In diesem Fall wird das return automatisch angewendet
Die Ausführung des Codes von
1:: läuft automatisch in den Code von
2::, da 1:: kein
return hat und das Label 2:: ignoriert wird. Beim Hotkey-Einzeiler ist return jedoch immer implizit. Und returns haben immer Wirkung, im Gegensatz zu Labels.
Jede Hotkey-Defintion endet beim nächsten return, egal ob explizit oder implizit, da ein Einzeiler äquivalent ist zu einem Mehrzeiler mit nur einer Codezeile und return (siehe oben) - ich nehme an, das wird im Interpreter entsprechend übersetzt:
Der Einzeiler soll eben nur Schreibarbeit sparen und die Syntax verienfachen, sich aber ansonsten nicht anders verhalten als sein mehrzeiliges Äquivalent. Sonst müsste man in solchen Fällen unter Einzeiler doch noch ein zusätzliches Return setzen, um zu verhindern, dass die Codeausführung noch weiter durchläuft...
Ich fänd's jedenfalls syntaktisch ungünstig, wenn ohnehin schon implizite returns nochmal zusätzlich kontextabhängig wären.
Also tu doch das:
Code: Select all
1::
Send, A
2::
Send, B
Send, C
Return
Oder (wenn 2 nur B senden soll
) :
Code: Select all
1::
Send, A
2::
Send, B
if (A_thishotkey !="2")
Send, C
Return
;oder:
1::
Send, A
2::Send, % (A_thishotkey !="2") ? "BC" : "B"
[c]Send C[/c] gehört nicht zum Code von [c]2::[/c] und ist grundsätzlich unerreichbar.
Wie swagfag zitiert, bei einzeiligen Hotkey-definitionen gilt:
[quote]Wenn ein Hotkey allerdings nur eine einzige Zeile ausführen muss, kann diese Zeile rechts neben dem Doppelpunkt-Paar geschrieben werden. In diesem Fall wird das return automatisch angewendet[/quote]
Die Ausführung des Codes von [c]1::[/c] läuft automatisch in den Code von [c]2::[/c], da 1:: kein [docs]return[/docs] hat und das Label 2:: ignoriert wird. Beim Hotkey-Einzeiler ist return jedoch immer implizit. Und returns haben immer Wirkung, im Gegensatz zu Labels. [i]Jede[/i] Hotkey-Defintion endet beim nächsten return, egal ob explizit oder implizit, da ein Einzeiler äquivalent ist zu einem Mehrzeiler mit nur einer Codezeile und return (siehe oben) - ich nehme an, das wird im Interpreter entsprechend übersetzt:
Der Einzeiler soll eben nur Schreibarbeit sparen und die Syntax verienfachen, sich aber ansonsten nicht anders verhalten als sein mehrzeiliges Äquivalent. Sonst müsste man in solchen Fällen unter Einzeiler doch noch ein zusätzliches Return setzen, um zu verhindern, dass die Codeausführung noch weiter durchläuft... :shifty:
Ich fänd's jedenfalls syntaktisch ungünstig, wenn ohnehin schon implizite returns nochmal zusätzlich kontextabhängig wären.
Also tu doch das:
[code]1::
Send, A
2::
Send, B
Send, C
Return[/code]
Oder (wenn 2 nur B senden soll ;) ) :
[code]1::
Send, A
2::
Send, B
if (A_thishotkey !="2")
Send, C
Return
;oder:
1::
Send, A
2::Send, % (A_thishotkey !="2") ? "BC" : "B"
[/code]