Lua Logo
Funktionen

Was wissen wir schon von Funktionen? (wenn wir bis jetzt alles gelesen haben)
  • Sie haben einen Namen (Ist in 99.9% der Fälle korrekt. Manchmal haben sie keinen.)
  • Sie müssen aufgerufen werden
  • Sie führen etwas aus (wenn sie aufgerufen werden)
  • Sie beherbergen einen Block (der ja wiederum aus Blöcken bestehen kann)
  • Sie hören mit end auf
Sie können auch etwas zurückgeben. Hierzu benutzen wir das Schlüsselwort return

return dasWasIchZurueckGebenWill

Man kann auch mehr als eins zurückgeben dann sieht das so aus:

return dasWasIchZurueckGebenWill1, dasWasIchZurueckGebenWill2, dasWasIchZurueckGebenWill3, .....

  • return muss immer das letzte Schlüsselwort vor einem end sein.
  • return beendet die Funktion
  • return kann (muss nicht) einen Wert zurückgeben.
  • Der Wert kann alles sein, was wir kennen
  • return kann mitten in einer Funktion stehen (aber immer vor einem end)


Wenn der Übersetzter im Programm sieht:

FunktionsName()

Dann erkennt er an den Klammern, dass es sich hier um eine Funktion handeln soll, die er ausführen muss.

Er sucht die Funktion in seinem Speicher und wenn sie da ist führt er die Anweisungen, die dort drin stehen aus.


Kennt er sie nicht, so gibt es wieder einen
  • Error: (17) attempt to call global 'FunktionsName' (a nil Value)
  • Fehler: Versuch 'FunktionsName' aufzurufen (gibt es nicht)
Was kann das für Gründe haben?
  • Sie gibt es wirklich nicht
  • Wir haben den Namen falsch geschrieben
  • Der Übersetzter hat sie noch nicht eingelesen
Übrigens: Die (17) oben, ist die Zeilennummer, in der das passiert ist. Davor steht auch noch die Datei in der es passiert ist. In unserem Fall:
[string "Unit1.lua"] wir haben ja noch nicht umbenannt. Alles zu seiner Zeit.


Das war es schon fast. Eins fehlt noch. Wir möchten der Funktion ja auch Werte übergeben.
Jetzt kommt ein neues/altes Wort ins Spiel

Parameter

Wir haben es schon einmal benutzt und zwar bei der Erklärung wie man Variablen am besten schreibt. Von dort wissen wir, dass sie mit einem Unterstrich anfangen sollten.


Wir nehmen an, wir haben eine Funktion die den Namen Laufe hat.
Als Parameter müssen wir ihr übergeben
  • Wer soll laufen
  • Wohin soll er laufen
Dann ist der Aufruf der Funktion:

Laufe("Angusk", positionHauptQuartier)

Wir sehen: Die Parameter, die wir übergeben, werden mit einem Komma voneinander getrennt.

Die Funktion selbst sieht dann so aus:

function Laufe(_wer, _wohin)

Jetzt wissen wir durch den Unterstrich innerhalb der ganzen Funktion, dass dies ein übergebener Parameter ist. Diesen verändern wir auch nicht, da sonst unser System nicht greift.
Noch eins: Parameter sind innerhalb der Funktion local. Sie können nur dort und in den Blöcken in dieser Funktion angesprochen, verändert und gesehen werden. Ist die Funktion beendet gibt es sie nicht mehr. Sie sind nil.

Das war's jetzt von Funktionen. Alles andere macht der Block in der Funktion.

Eigentlich doch nicht schwer? (kommt noch. In der Kombination von allem)
Die Vervielfältigung der auf diesen Seiten enthaltenen Informationen und Grafiken ist untersagt, ausgenommen davon ist sämtlicher auf diesen Seiten angezeigter Quellcode.
Siehe auch: Haftungsausschluss
Copyright © Robert Schmitz 2006