4D v16.3

Case of...Else...End case

Home

 
4D v16.3
Case of...Else...End case

Case of...Else...End case  


 

 

Die Syntax für die Abfragefolge Case of...Else...End case lautet:

 Case of
    :(Boolean_Expression)
       statement(s)
    :(Boolean_Expression)
       statement(s)
       .
       .
       .
 
    :(Boolean_Expression)
       statement(s)
    Else
       statement(s)
 End case

Die zweite Folge, beginnend mit Else ist optional; Sie können auch nur schreiben:

 Case of
    :(Boolean_Expression)
       statement(s)
    :(Boolean_Expression)
       statement(s)
       .
       .
       .
 
    :(Boolean_Expression)
       statement(s)
 End case

Mit der Struktur Case of...Else...End case kann Ihre Methode wie bei der Struktur If...Else...End if zwischen alternativen Aktionen wählen. Im Gegensatz zur Struktur If...Else...End if prüft die Struktur Case of...Else...End case eine unbegrenzte Anzahl von Boolean Ausdrücken und führt bei einer wahren Bedingung eine Aktion aus.

Vor jedem Boolean Ausdruck steht ein Doppelpunkt (:). Die Kombination aus Doppelpunkt und Boolean Ausdruck kennzeichnet eine Bedingung. Beispiel:

:(bValidate=1)

Nur die Anweisungsfolge wird ausgeführt, die bei der Abfrage als erstes mit der Bedingung übereinstimmt. Trifft keine der Bedingungen zu, wird keine Anweisungsfolge ausgeführt.

Sie können nach der letzten Befehlsfolge eine Else Anweisung integrieren. Sind dann alle Bedingungen falsch, wird die Anweisungsfolge nach Else ausgeführt.

Dieses Beispiel prüft eine numerische Variable und zeigt eine Warnung mit einem Wort an:

 Case of
    :(vResult=1) ` Prüfe, ob die Nummer gleich 1 ist
       ALERT("Eins.") ` Wenn ja, zeige eine Warnung
    :(vResult=2) ` Prüfe, ob die Nummer gleich 2 ist
       ALERT("Zwei.") ` Wenn ja, zeige eine Warnung
    :(vResult=3) ` Prüfe, ob die Nummer gleich 3 ist
       ALERT("Drei.") ` Wenn ja, zeige eine Warnung
    Else ` Ist es weder 1, 2 oder 3, zeige eine Warnung
       ALERT("Es war weder eins, zwei oder drei.")
 End case

Zum Vergleich folgt hier dieselbe Methode mit der Abfrage If...Else...End if:

 If(vResult=1) ` Prüfe, ob die Nummer gleich 1 ist
    ALERT("Eins.") ` Wenn ja, zeige eine Warnung
 Else
    If(vResult=2) ` Prüfe, ob die Nummer gleich 2 ist
       ALERT("Zwei.") ` Wenn ja, zeige eine Warnung
    Else
       If(vResult=3) ` Prüfe, ob die Nummer gleich 3 ist
          ALERT("Drei.") `Wenn ja, zeige eine Warnung
       Else ` Ist es weder 1, 2 oder 3, zeige eine Warnung
          ALERT("Es war weder eins, zwei oder drei.")
       End if
    End if
 End if

Beachten Sie, dass bei der Struktur Case of...Else...End case nur die erste Bedingung, die WAHR ist, ausgeführt wird. Selbst wenn zwei oder mehr Bedingungen WAHR sind, werden nur die Befehlsfolgen nach der ersten wahren Bedingung ausgeführt.
Wollen Sie demnach in derselben Methode einfache und komplexe Bedingungen prüfen, müssen Sie die komplexen vor die einfachen Bedingungen setzen, da diese sonst nie ausgeführt werden könnten. Schreiben Sie z.B.:

 Case of
    :(vResult=1)
       ... `Instruction(s)
    :((vResult=1) & (vRequest#2))
  `<-- Die nachfolgenden Anweisungen werden NIE ausgeführt
       ... `Instruction(s)<gen9>End case</gen9>

werden die der komplexen Bedingung zugeordneten Anweisungen nie ausgeführt. Denn dieser Fall ist nur WAHR, wenn die beiden booleschen Bedingungen wahr sind. Nun ist jedoch die erste Bedingung die vorangestellte einfache Bedingung. Wenn sie WAHR ist, wird die einfache Bedingung ausgeführt und 4D verlässt die Schleife, ohne die komplexe Bedingung zu bewerten. Das geschieht nur, wenn Sie Ihre Methode folgendermaßen strukturieren:

 Case of
    :(vResult=1) & (vRequest#2)
  `<-- Komplexe Bedingungen müssen immer an erster Stelle stehen
       ... `Instruction(s)
    :(vResult=1)
       ... `Instruction(s)
 End case

Tipp: Sie können auch Schleifen ohne Befehlsfolge einrichten. Wenn Sie einen Algorithmus oder eine spezifische Anwendung entwickeln, können Sie auch schreiben:

 Case of
    :(Boolean_Expression)
    :(Boolean_Expression)
 
       .
       .
    :(Boolean_Expression)
       statement(s)
    Else
       statement(s)
 End case

oder:

 Case of
    :(Boolean_Expression)
    :(Boolean_Expression)
       statement(s)
       .
       .
 
    :(Boolean_Expression)
       statement(s)
    Else
 End case

oder:

 Case of
    Else
       statement(s)
 End case



Siehe auch 

Ablaufsteuerung
For...End for
If...Else...End if
Repeat...Until
While...End while

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: Grundbegriffe

 
GESCHICHTE 

 
ARTIKELVERWENDUNG

4D Programmiersprache ( 4D v16)
4D Programmiersprache ( 4D v16.1)
4D Programmiersprache ( 4D v16.2)
4D Programmiersprache ( 4D v16.3)