Switch...Case...EndSwitch
Сравнивает одно значение с множеством значений и выполняет соответствующий блок.
Switch <expression>
Case <value> [To <value>] [,<value> [To <value>] ...]
<statements_1>
[Case <value> [To <value>] [,<value> [To <value>] ...]
<statements_n>]
[Case Else
<else_statements>]
EndSwitch
Параметры
<expression> | Значение или выражение, возвращающее значение. Далее это значение сравнивается со значением(ями) или диапазоном значений в каждом Case до тех пор, пока не будет найдено совпадение. Это выражение вычисляется только один раз. |
<value> To <value> |
Если значение выражения <expression> находится между двумя указанными значениями, то выполняется принадлежащий ему блок Case. |
<value> |
Если значение выражения <expression> равно указанному значению <value>, то выполняется принадлежащий ему блок Case. Значение <value> может быть выражением. |
<statements> |
Многострочный блок операторов, который выполняется, если связанное с ним выражение соответствует <expression> |
Примечания
Если совпадают более, чем одно из выражений Case, то выполнится только первый блок, без сравнения последующих выражений Case.См. также
If...Then, If...Else...EndIf, Select...EndSelect, ContinueCaseПример
Switch @HOUR
Case 6 To 11
$sMsg = "Доброе утро"
Case 12 To 17
$sMsg = "Добрый день"
Case 18 To 21
$sMsg = "Добрый вечер"
Case Else
$sMsg = "Вы всё ещё занимаетесь программированием в такой поздний час?"
EndSwitch
MsgBox(4096, Default, $sMsg)
; перечисление и диапазон, а также функция или иное выражение в условии
$b = 'К'
Switch Asc($b)
Case 48 To 57
$sMsg = "$b является числом"
Case 65 To 90, 97 To 122, 168, 184, 192 To 255
$sMsg = "$b является буквой"
Case Else
$sMsg = "$b не является числом или буквой"
EndSwitch
MsgBox(4096, "$b = " & $b, $sMsg)
; инверсный вариант - сравнение с постоянной величиной
Local $a = 3, $b = 1, $c = 1
Switch 1
Case $a
$sMsg = "a=1"
Case $b
$sMsg = "b=1"
Case $c
$sMsg = "c=1"
Case Else
$sMsg = "Ни один"
EndSwitch
MsgBox(4096, Default, $sMsg)