AHK L:Funktionen
Vorwort
Funktionen sind dafür gedacht, wiederekhrende Codefragmente nur einmal zu schreiben aber sie immer wieder zu nutzen.
Man kann dieses zwar auch ber (GoSub) lösen, doch können wir da keine Werte übergeben, sondern sie bleiben starr. Durch das Nutzen einer Funktion, machen wir unseren Code Dynamisch. Es ist nur zu beachten, das wir Variablen die wir im Script verwenden nicht innerhalb einer Funktion nutzen können. Wir müssen sie Übergeben.
Merke: Variablen können wir nicht Direkt verwenden, wir müssen sie Übergeben
Erstellen einer Funktion
Um eine Funktion zu erstellen benötigt es nicht viel
VarOutput()
{
Var := !Var
return, Var
}
Nun wollen wir iuns mit dem Aufbau einer Funktion befassen.
"VarOutput()" dieses setzt unseren Namen der Funktion
Dann folgen unsere Klammern, wo wir unseren "Arbeitsbereich" mit eingrenzen
Wichtig ist, das wir das Return innerhalb der klammer setzen denn nur hier können wir auch das Ergebniss mit ausgeben.
Doch was bringt uns das nun?
Wir könnten nun per
OutputVar := VarOutput()
Das Ergebniss in einer Variable speichern um sie so auch zu verwenden
Loop, 4
{
OutputVar := VarOutput()
MsgBox % OutputVar
}
VarOutput()
{
Var := !Var
return, Var
}
Doch wird uns das nicht vieles bringen, da die Var immer 1 sein wird. Denn wir können die Var nicht nach Aussen speichern, sie wird innerhalb der Funktion verworfen sobald sie nicht mehr gebraucht wird. Um dieses verhalten zu ändern müssen wir Variablen auch übergeben.
OutputVar := ""
Loop, 4
{
OutputVar := VarOutput(OutputVar)
MsgBox % OutputVar
}
VarOutput(str)
{
Var := !str
return, Var
}
Es gibt auch noch eine zweite Möglichkeit, diese möchte ich euch auch nicht Vorenthalten. Wir benutzen hierfür "global". Das erlaubt uns Variablen Global zu setzen und so auch den Inhalt abzurufen.
Loop, 4
{
OutputVar := VarOutput()
MsgBox % OutputVar
}
VarOutput()
{
global OutputVar
Var := !OutputVar
return, Var
}
es ist hier immer sinnvoller den Parameter "global" zu verwenden.
Interesannt ist, das wir nun auch unsere Funktion direkt wiedergeben können
Loop, 4
{
OutputVar := VarOutput()
MsgBox % VarOutput()
}
VarOutput()
{
global OutputVar
Var := !OutputVar
return, Var
}
Optionale Parameter
Uns ist es gegeben, Parameter auch Optional zu setzen, d.h. das beim Funktionsaufruf der Parameter nicht angegeben werden muss, aber kann. Dazu setzen wir die Parameterbezeichnung ein "=" mit dem Standartwert hintendrann (Texte müssen mit "" gekennzeichnet sein)
MsgBox % VarOutput("Max Mustermann", "moin")
MsgBox % VarOutput("Max Mustermann")
VarOutput(Name, Grussformel="Hallo")
{
Var := Grussformel . " " . Name . " Wie geht es dir?"
return, Var
}