Funktionen
Table of Contents

Was wir schon wissen:

  • Sie beginnen mit dem function
  • Sie haben einen eindeutigen Bezeichner
  • Sie müssen aufgerufen werden
  • Sie führen einen Block aus (der aus noch mehr Blöcken bestehen kann)
  • Sie können andere Funktionen rufen
  • Sie enden mit end

Funktionen können einen Wert zurückgeben:

return x

Sie können auch mehrere Werte zurückgeben:

return x, y, z

Für die Rückgabe gibt es folgende Regeln:

  • return ist immer das letzte Schlüsselwort vor dem end
  • return beendet in jedem Fall die Funktion
  • return muss keinen Wert zurückliefern (Fehlerfallvermeidung durch Funktionsende)
  • return kann sonst wo stehen, wo dahinter ein end steht

Ein Funktionsruf wird immer mit () abgeschlossen. Nur dann wird die Funktion aufgerufen.

meineFunktion()

Parameter

Eine Funktion kann auch Werte aufnehmen. Diese bezeichnen wir als Funktionsargumente oder Funktionsparameter. Über diesen Mechanismus kannst du der Funktion lokale Zeiger auf Werte im Speicher liefern oder einfach nur lokale Werte anlegen. Der Compiler erkennt den Unterschied automatisch. Du brauchst dir, anders als in C, keine Gedanken um die richtigen Datentypen machen (Gott sei Dank!!!).

function Move(_settler,_destination)
      assert(IsExisting(_destination))
      assert(IsExisting(_settler))

      local pos = GetPosition(_destination)
      local eID = GetID(_settler)
      Logic.MoveSettler(eID,pos.X,pos.Y)
end

Ein einfaches Beispiel ist die Funktion Move. Sie erhält aus Argumente eine Entity, die bewegt werden soll, und ein Ziel, wo sie hinlaufen soll. Die Funktion prüft ob Siedler und Ziel existieren und "sammelt" die nötigen Daten um den Siedler zu seinem Ziel zu schicken.

Hier erkennen wir:

  • mehrere Anweisungen -> Funktionsblock
  • Die Funktion ruft andere Funktionen auf und übergibt Parameter an sie
  • Die Funktion liefert nichts zurück.

Meinen Glückwunsch! Der Crashkurst ist beendet! ;-)


Verzweigungen

Zurück zu Grundlagen

Sofern nicht anders angegeben, steht der Inhalt dieser Seite unter Lizenz Creative Commons Attribution-ShareAlike 3.0 License