Funktionen
Funktionen dienen dazu, Quellcode zu gliedern und zu strukturieren. Des Weiteren werden Funktionen auch dazu verwendet, den
dort notierten Code mehrmals nutzen zu können. Einige Funktionen (z. B. parseInt()
, parseFloat()
)
und einige Klassen (z. B. Math
, Date
) sind in den sogenannten Libraries (zu Deutsch Bibliotheken)
des SDKs enthalten. Diese können ohne weiteres verwendet werden. Wie man diese Funktionen bzw. Funktionen im Allgemeinen aufruft,
haben wir ja bereits gelernt.
Nun wollen wir uns aber damit beschäftigen, wie man eigene Funktionen definiert. Funktionen befinden sich immer innerhalb
einer Klasse (class
-Block). Die Deklaration besteht dabei aus 5 Teilen: dem Zugriffsmodifizierer, dem Schlüsselwort
function
, dem Funktionsnamen, einem runden Klammernpaar (für Funktionsparameter) und dem Rückgabetyp. Zwischen
dem runden Klammernpaar und dem Rückgabetyp muss zudem ein Doppelpunkt notiert werden. Auf die Funktionsparameter und den
Rückgabetyp (aktuell verwenden wir hier void
) gehen wir später noch genauer ein. Der Zugriffsmodifizierer kann
private
, public
oder protected
sein. Auf deren genaue Bedeutung gehen wir im
Thema Objektorientierung nochmals ein. Der Funktionsname muss innerhalb der Klasse eindeutig
sein und wird meistens ebenfalls in der Camel-Case-Schreibweise (mit kleinem Buchstaben am Anfang) angegeben.
Das folgende Beispiel zeigt den Aufruf der Funktion und darunter die Deklaration der Funktion:
gebeHalloAus();
Funktion gebeHalloAus():
private function gebeHalloAus():void { trace("Hallo Welt!"); }
Ausgabe:
Hallo Welt!
Funktion mit Parametern
Um Funktionen mit Parametern zu definieren, müssen wir bei der Funktionsdeklaration innerhalb der Klammern Variablen deklarieren.
Dabei wird der Name gefolgt von einem Doppelpunkt :
und dem Typ angegeben. Mehrere Variablen bzw. Parameter können mittels
Komma ,
(wie beim Aufruf) getrennt werden. Um einen Parameter als optional zu kennzeichnen, notieren wir nach
dem Datentyp ein Gleichheitszeichen und den für den Parameter geltenden Standardwert. Dieser Standardwert gilt immer dann,
wenn kein Wert für den Parameter übergeben wurde. Eine Funktion kann selbstverständlich mehrere Parameter haben, wovon auch mehrere
optional sein können, jedoch müssen sich alle optionale Parameter am Ende befinden. Beim Aufruf ist das Auslassen von Parametern
nicht möglich. Lediglich das Weglassen von Parametern am Ende (von rechts nach links) ist möglich. Die Namen der Funktionsparameter
dürfen sich nicht mit den Variablennamen innerhalb der Funktion oder untereinander überschneiden.
gebeNamenAus("Kai"); gebeNamenAus("Lisa"); gebeNamenAus();
Funktion gebeNamenAus():
private function gebeNamenAus(name:String = "Peter"):void { trace("Hallo " + name + "!"); }
Ausgabe:
Hallo Kai! Hallo Lisa! Hallo Peter!
Funktion mit Rückgabewert
Der Rückgabetyp ist bei der Funktionsdeklaration der letzte Teil und wird hinter dem Doppelpunkt angegeben. Bisher hatten alle
unsere definierten Funktionen den Rückgabetyp void
. void
ist ein spezieller Datentyp, welcher angibt,
dass die Funktion keinen Wert zurückgibt. Dieser kann jedoch (falls benötigt) durch einen anderen beliebigen Datentyp (z. B. eine Zahl,
eine Zeichenkette, ein Objekt) ersetzt werden.
Um von der Funktion aus einen Wert zurückzugeben, müssen wir als Anweisung das Schlüsselwort return
, gefolgt von dem
zurückzugebenden Wert, angeben. Anweisungen, welche hinter der return
-Anweisung stehen, werden nicht ausgeführt.
trace("7 + 5 = " + addiereZahlen(7, 5)); trace("1.2 + 8.9 = " + addiereZahlen(1.2, 8.9).toFixed(1));
Funktion addiereZahlen():
private function addiereZahlen(a:Number, b:Number):Number { return a + b; }
Ausgabe:
7 + 5 = 12 1.2 + 8.9 = 10.1
Übrigens: Bei Funktionen mit dem Rückgabetyp void
können wir mittels der Anweisung return;
ebenfalls
aus der Funktion herausspringen.