return und FunktionsaufrufeVorwissen:Keins
Schwierigkeit:***** (Grundlagen)
Heute dreht es sich bei mir mal um das "return" und "Funktionsaufrufen".
Was ist das eigentlich?return ist eine Möglichkeit das Ergebnis oder einen Wert oder eine Variable von einer Funktion an die Umwelt abzugeben. Nach einem return aufruf wird die Funktion übrigens immer abgebrochen.
Man kann sich das wunderbar vorstellen wenn man sagt das das Script aus einem Raum mit Truhen besteht. Die Truhen stellen die Funktionen dar wie "Initialize", "Hit", oder selbstgemachtes wie "Addieren".
Die Truhe mit Initialize ist nie verschlossen und wird einmal am anfang geöffnet. Diese gibt vielleicht Schlüssel für andere Funktionen wenn diese darin aufgerufen werden.
Nun ist ein Return einfach das was die Funktion zurückgibt. Die Truhe geht also auf und hält z.B einen Wert hoch. Nehmen wir mal 5 oder einfach ein gefundenes Objekt wie einen bestimmten Clonk.
Dieser kann von anderen Truhen aufgenommen werden um damit arbeiten zu können.
Ein Beispiel pls!Ein super einfaches Beispiel ist das für eine Rechnung.
Ich habe also in meinem Script folgendes stehen.
- Code:
-
func Initialize(){
var Ergebnis = Rechner(2,5);
}
protected func Rechner(var a,var b){
var Zahl = a+b;
return(Zahl);
}
Das Ergebnis ist natürlich 7.
Doch was ist dies!
Rechner(var a, var b){...?!
Tja das ist etwas was untrennbar mit return verbunden ist.
Ich kann nämlich eine Funktion mit bestimmten Werten aufrufen. Das heißt ich sage der Truhe: "Hier ich geb dir 2 und 5 und du machst dann dein Zeug damit".
Da die Truhe ziemlich doof ist kann sie mit 2 und 5 nicht mehr anfangen als sie zusammenzurechnen
.
Dann kommt das return(Zahl); was nicht mehr und nicht weniger bedeutet, das Zahl an die Öffentlickeit der Truhen weitergegeben wird.
In Initialize steht Rechner(2,5). Jetzt wissen wir was Rechner() macht und können sagen: Rechner(2,5) = 7.
Ja okay aber wie genau funktioniert das mit dem Werte übergeben?Hm die Antwort darauf ist einfach. Man muss nur immer beachten auch alles richtig zu machen. Man kann jede Funktion im selben Script zu jedem Zeitpunkt aufrufen. Um das zu tun gibt man ganz einfach dessen Namen ein: "Rechner()".
Um nun aber zu sagen das die Truhe Namens Rechner mir 5 und 2 addieren soll geben wir ihm natürlich die Zahlen mit.
Rechner(2,5);Damit die Funktion Rechner damit aber auch was anfangen kann, muss man sozusagen zwei Löcher bohren um die 2 und die 5 zu empfangen.
Das geht so. In der Funktion Rechner da oben steht ja
Rechner(var a, var b). Das heißt Tür 1 oder Parameter 1 der übergeben wird an Rechner wird in der Variable
a festgehalten. Der zweite in
b. Dann hat die Funktion direkt a und b definiert und kann damit arbeiten.
Okay hab ich verstanden. Zurück zu return. Wann ist das sinnvoll und wann nicht?Das ist eine sehr wichtige Frage. Viele tausend Zeilen Code wurden schon vergewaltigt mit einem return() das niemals gebraucht wird.
Ein return ist immer nur dann sinnvoll wenn diese Funktion von einer anderen Funktion benötigt wird. Es bringt nichts einfach ein return hinzuschreiben wenn man damit nix tut. Nur wenn der Aufruf einen Rückgabewert braucht ist es sinnvoll. Es können übrigens auch mehrere Dinge zurückgegeben werden. z.B
return(Zahl,a,b,23,3,"Text");.
Natürlich brauch man neuerdings keine Klammern bei return mehr aber ich werde eure Scripts nicht verbessern wenn ihr da keine Klammern habt weil es total unlesbar wird oO.
Ich hoffe man konnte verstehn was ich so geschrieben habe. Bei Fragen kann ich es natürlich gerne editieren.
Mit freundlichen Grüßen
Elfangor