switch
Позволяет выбирать одно из множества возможных значений переменной или выражения и выполнять соответствующий блок кода.
int A = 2;
switch (A) {
case 1:
print("Этот блок выполнится если A равно 1");
break;
case 2:
print("Этот блок выполнится если A равно 2");
break;
}
case
Значение case
должно быть вычислено на этапе компиляции. Благодаря этому свойству, при исполнении вместо проверки каждого блока будет сразу осуществлён переход к блоку, который удовлетворяет условию.
break
После первой положительной проверки в case
будут выполнены все последующие блоки:
int A = 1;
switch(A){
case 1:
print("Этот блок выполнится если A равно 1");
case 2:
print("Этот блок выполнится если A равно 1 или 2");
case 3:
print("Этот блок выполнится если A равно 1 или 2 или 3");
}
Для контроля этого поведения служит break
, который прерывает исполнение ближайшего switch
:
int A = 1;
switch(A){
case 1:
print("Этот блок выполнится если A равно 1");
break;
case 2:
case 3:
print("Этот блок выполнится если A равно 2 или 3");
break;
case 4:
print("Этот блок выполнится если A равно 4");
// break; // в последнем блоке можно опустить ибо логика не изменится
}
default
Для случая, когда не выполнился ни один case
можно указать действия в блоке default
:
switch(A){
case 1:
print("Этот блок выполнится если A равно 1");
break;
case 2:
print("Этот блок выполнится если A равно 2");
break;
default:
print("Этот блок выполнится если не выполнился ни один case");
}
В одном switch
может содержаться максимум один блок default
, но располагаться он может на любой позиции. Это поведение можно, к примеру, использовать с перечислениями:
enum MyEnum {A, B, C}
int getMyEnumValue(int myInt){
switch(myInt){
case MyEnum::A:
return MyEnum::A;
// Если myInt не является одним из значений MyEnum, используем MyEnum::B в качестве значения по умолчанию.
default:
case MyEnum::B:
return MyEnum::B;
case MyEnum::C:
return MyEnum::C;
}
}
Last modified: 25 December 2024