Bedingungen
Mit Bedingungen ist es möglich, Abfragen durchzuführen und somit auf sogenannte Fälle abzuprüfen (Fallunterscheidung).
Wir können also damit Rückgabewerte von Funktionen oder Werte von Variablen prüfen und darauf individuell reagieren. AS
bietet hier die einfache Verzweigung mittels if
und die mehrfache Verzweigung mittels switch
-case
an.
Einfache Verzweigung
Einfache Verzweigungen (einfache Abfragen) werden durch das Schlüsselwort if
gekennzeichnet. Nach dem Schlüsselwort
wird in runden Klammern die Bedingung (zur Erinnerung: es muss sich dabei um einen Wert vom Typ Boolean
handeln)
notiert. Anschließend wird ein Block angegeben, welcher nur ausgeführt wird, wenn die Bedingung zutrifft.
if (a == b) { // Anweisungen wenn der Fall zutrifft }
Natürlich ist es auch möglich, darauf zu reagieren, wenn die Bedingung nicht zutrifft. So ist es neben der Verwendung
des NOT-Operators (z. B. !benutzerAngemeldet
) zum „Wechseln“ des Boolean
-Werts (aus !true
wird false
und aus !false
wird true
) auch möglich, beide Fälle (Bedingung trifft zu und
Bedingung trifft nicht zu) abzuprüfen. Hierzu notieren wir nach dem if
-Block das Schlüsselwort else
mit einem weiteren Block.
if (a == b) { // Anweisungen wenn der Fall zutrifft } else { // Anweisungen wenn der Fall nicht zutrifft }
Sowohl innerhalb des if
-Blocks als auch des else
-Blocks können weitere Verzweigungen folgen:
if (a == b) { // Anweisungen wenn der Fall zutrifft } else { if (c == d) { // Anweisungen wenn der Fall zutrifft } else { // Anweisungen wenn der Fall nicht zutrifft } }
Eine verkürzte Schreibweise für weitere Verzweigungen im else
-Block können mittels else if
erreicht
werden. Das obige Beispiel mit Verwendung von else if
sieht dann wie folgt aus:
if (a == b) { // Anweisungen wenn der 1. Fall zutrifft } else if (c == d) { // Anweisungen wenn der 2. Fall zutrifft } else { // Anweisungen wenn beide Fälle nicht zutreffen }
Des Weiteren ist es möglich, das geschweifte Klammernpaar wegzulassen, sofern sich innerhalb einer der Blöcke nur eine auszuführende Anweisung befindet. Das folgende Beispiel zeigt die Überprüfung von zwei Variablen, bei welcher je nach Wert eine bestimmte Meldung ausgegeben wird:
var a:int = 12; var b:int = 7; if (a > b) trace("a ist größer als b"); else if (a == b) trace("a ist gleich b"); else trace("a ist kleiner als b");
Ausgabe:
a ist größer als b
Wie auch in vielen anderen Programmiersprachen, ist es möglich, eine In-Line-Abfrage mittels if
-else
durchzuführen. Vorteil dieser Variante ist, dass diese wesentlich kürzer ist, jedoch muss darauf geachtet werden, dass diese
Variante nur in bestimmten Fällen verwendet kann: Sowohl der if
-Zweig als auch der else
-Zweig müssen
einen Wert zurückgeben. Dieser Wert kann von einem Funktionsaufruf zurückgegeben worden sein oder auch von einer anderen Variablen
sowie einer Konstante kommen. Die In-Line-Verzweigung kann dann einer anderen Funktion übergeben oder einer Variablen zugewiesen
werden. Zum Syntax: Zuerst wird die Bedingung angegeben, anschließend ein Fragezeichen ?
gefolgt von dem Wert, wenn
die Bedingung zutrifft, einem Doppelpunkt :
und dem Wert, wenn die Bedingung nicht zutrifft. Hierzu als erstes
folgendes „ausführliches“ Beispiel:
if (a == b) c = "Wert gleich"; else c = "Wert ungleich"
In der In-Line-Variante sieht das obige Beispiel dann wie folgt aus:
c = (a == b) ? "Wert gleich" : "Wert ungleich";
Mehfache Verzweigung
Mehrfache Verzweigungen werden mittels des Schlüsselworts switch
gekenzeichnet. Dafür wird in dem folgenden runden
Klammernpaar der zu überprüfende Wert angegeben (keine Bedingung!).
switch (a) { }
Die einzelnen Fälle werden nun mit dem Schlüsselwort case
gekennzeichnet. Danach folgt der Wert, welcher mit dem Wert
von oben (siehe switch
) verglichen werden soll. Zum Schluss folgt noch ein Doppelpunkt :
. Nun können wir
den auszuführenden Code notieren. Dabei ist die Verwendung eines Blocks mit geschweiften Klammern nicht notwendig. Um den
case
-Block zu beenden und dem Compiler damit mitzuteilen, dass wir am Ende der Anweisungen für diesen case
-Block
sind, benötigen wir das Schlüsselwort break
mit darauffolgendem Semikolon ;
.
case 1: // Anweisungen welche ausgeführt werden sollen break;
Von den case
-Blöcken können wir selbstverständlich mehrere notieren. Wollen wir zusätzlich den Fall abprüfen, dass
keine der Bedingungen zutrifft, so können wir den default
-Block verwenden:
default: // Anweisungen welche ausgeführt werden sollen break;
Hier nun folgendes vollwertiges Beispiel einer Verzweigung mittels switch
-case
:
switch ((new Date()).month + 1) { case 1: trace("Januar"); break; case 2: trace("Februar"); break; case 3: trace("März"); break; case 4: trace("April"); break; case 5: trace("Mai"); break; case 6: trace("Juni"); break; case 7: trace("Juli"); break; case 8: trace("August"); break; case 9: trace("September"); break; case 10: trace("Oktober"); break; case 11: trace("November"); break; case 12: trace("Dezember"); break; }
Ausgabe:
August
Wichtig: Mit der switch
-case
-Verzweigung werden lediglich einzelne Werte überprüft. Komplexe
Abfragen mit mehreren Variablen oder Wertebereichen werden daher mit if
-Verzweigungen gelöst.
Übrigens: Jeder Code einer switch
-case
-Verzweigung könnte sich mittels einer
if
-else
-Verzweigung ersetzen lassen. Auch wenn die switch
-case
-Verzweigung
einen längeren Code erzeugt, ist diese wesentlich übersichtlicher und gilt für solche Fälle als besserer Programmierstil.