AHK L:Funktionen

Aus San Andreas Multiplayer UDF
Wechseln zu: Navigation, Suche

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
}