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

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

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

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

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

Parameter

ControlExpressionControlExpressionControlExpressioncontrolExpressioncontrol_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 switchswitchSwitchSwitchswitch (als Operator) den Wert 2 ( H_MSG_TRUE) . Andernfalls wird eine Fehlerbehandlung durchgeführt und ein Fehlercode zurückgeliefert.

Alternativen

ififIfIfif, elseifelseifElseifElseifelseif, elseelseElseElseelse

Siehe auch

casecaseCaseCasecase, defaultdefaultDefaultDefaultdefault, endswitchendswitchEndswitchEndswitchendswitch, ififIfIfif

Modul

Foundation