Вы могли бы написать логику, которая должна произойти в default
блока в функции и вызвать его при необходимости:
void defAction(){
printf("Hello, World!\n");
}
int main() {
int num = 1, foo = 0;
switch(num) {
case 1:
if(foo) {
printf("Goodbye, World!\n");
} else {
defAction();
}
break;
default:
defAction();
}
return 0;
}
Помните, что если дело не использует break;
, все случаи под ним (в том числе default
) также называют. Таким образом, если вы выходите из коммутатора if(foo)
, он перейдет к default
. Это очень полезно, если вы хотите перейти на default
не более одного case
, и в этом случае вы положили case
последнему, прямо перед default
.
использовать с осторожностью/см комментарии ниже
switch(num) {
case 2:
// do sth
break;
case 3:
// do sth
break;
case 4:
// do sth
break;
case 1:
if(foo) {
printf("Goodbye, World!\n");
break;
}
// ELSE don't break, use default
default:
defAction();
}
Нет, Java не поддерживает возможность «перейти» к корпусу коммутатора. – khelwood
Это было бы ужасно. Просто создайте метод doDefault() и вызовите его из случая по умолчанию и из ветки else case 1. –
Ужасно? C# имеет это. – Joe