Wählen Sie oben rechts eine andere Programmiersprache aus.

Wählen Sie oben rechts eine andere Programmiersprache aus.

Wählen Sie oben rechts eine andere Programmiersprache aus.

Wählen Sie oben rechts eine andere Programmiersprache aus.

switchswitchSwitchSwitchswitch (Operator)

Name

switchswitchSwitchSwitchswitch — Einleiten einer Mehrfachverzweigung.

Signatur

switch( : : ControlExpression : )

Herror switch(const Hlong ControlExpression)

Herror T_switch(const Htuple ControlExpression)

void Switch(const HTuple& ControlExpression)

static void HOperatorSet.Switch(HTuple controlExpression)

def switch(control_expression: int) -> None

Beschreibung

switchswitchSwitchSwitchSwitchswitch leitet einen Block mit einer Mehrfachverzweigung bzw. Fallunterscheidung ein. Der Parameter ControlExpressionControlExpressionControlExpressionControlExpressioncontrolExpressioncontrol_expression muss einen Integerwert ergeben. Der berechnete Wert bestimmt, zu welcher casecaseCaseCaseCasecase-Marke innerhalb des switchswitchSwitchSwitchSwitchswitch..endswitchendswitchEndswitchEndswitchEndswitchendswitch-Blocks gesprungen wird. Jede casecaseCaseCaseCasecase-Anweisung enthält genau eine Integerkonstante. Stimmen der in ControlExpressionControlExpressionControlExpressionControlExpressioncontrolExpressioncontrol_expression berechnete Wert und die casecaseCaseCaseCasecase-Konstante überein, wird die entsprechende Marke angesprungen. Optional kann innerhalb eines switchswitchSwitchSwitchSwitchswitch-Blocks als letzte Sprungmarke eine defaultdefaultDefaultDefaultDefaultdefault-Anweisung angegeben werden. Diese wird angesprungen, wenn für den in ControlExpressionControlExpressionControlExpressionControlExpressioncontrolExpressioncontrol_expression berechneten Wert keine passende casecaseCaseCaseCasecase-Anweisung gefunden wurde.

Wie in den Programmiersprachen C, C++ und C# stellt die casecaseCaseCaseCasecase-Anweisung eine Sprungmarke dar und leitet anders als elseifelseifElseifElseifElseifelseif nicht einen abgeschlossenen Block ein, der automatisch beim nächsten casecaseCaseCaseCasecase verlassen wird.

Um nach den Anweisungen eines casecaseCaseCaseCasecase-Zweiges den switchswitchSwitchSwitchSwitchswitch-Block zu verlassen, muss wie in C und C++ eine breakbreakBreakBreakBreakbreak-Anweisung eingebaut werden. Diese kann auch an beliebigen Stellen innerhalb eines casecaseCaseCaseCasecase-Zweiges angegeben werden. Wird in der Programmausführung ein breakbreakBreakBreakBreakbreak erreicht, wird von dort direkt hinter die den switchswitchSwitchSwitchSwitchswitch-Block abschließende endswitchendswitchEndswitchEndswitchEndswitchendswitch-Anweisung gesprungen.

Sollen für mehrere Integerwerte die gleichen Programmzeilen ausgeführt werden, können mehrere casecaseCaseCaseCasecase-Anweisungen unmittelbar aufeinander folgen.

Parameter

ControlExpressionControlExpressionControlExpressionControlExpressioncontrolExpressioncontrol_expression (input_control)  integer HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Integerausdruck, der die anzuspringende Sprungmarke bestimmt.

Beispiel (HDevelop)

TestStr := ''
for Index := 1 to 8 by 1
  TestStr := TestStr + '<'
  switch (Index)
  case 1:
    TestStr := TestStr + '1'
    break
  case 2:
    TestStr := TestStr + '2'
    * intentionally fall through to 3
  case 3:
    TestStr := TestStr + '3'
    * intentionally fall through to 4
  case 4:
    TestStr := TestStr + '4'
    break
  case 5:
  case 6:
    * common case branch for 5 and 5
    TestStr := TestStr + '56'
    break
  case 7:
    * continue for loop
    TestStr := TestStr + '7'
    continue
  default:
    TestStr := TestStr + 'd'
    break
  endswitch
  TestStr := TestStr + '>'
endfor

Ergebnis

Enthält die Bedingung einen korrekten Ausdruck, dann liefert switchswitchSwitchSwitchSwitchswitch (als Operator) den Wert 2 (H_MSG_TRUE). Andernfalls wird eine Fehlerbehandlung durchgeführt und ein Fehlercode zurückgeliefert.

Alternativen

ififIfIfIfif, elseifelseifElseifElseifElseifelseif, elseelseElseElseElseelse

Siehe auch

casecaseCaseCaseCasecase, defaultdefaultDefaultDefaultDefaultdefault, endswitchendswitchEndswitchEndswitchEndswitchendswitch, ififIfIfIfif

Modul

Foundation