Может ли предложение иметь синтаксис для switch
, который не нуждается в breaks
все время выполнимо?Может ли быть бесполезным выключатель/корпус?
Мое предложение было бы вставить auto
как до switch
и каждый случай:
auto switch(expr) {
auto case 1: statement; statement;
auto case 2: statement; statement;
default: statement; statement;
}
будет эквивалентно
switch(expr) {
case 1: statement; statement; break;
case 2: statement; statement; break;
default: statement; statement;
}
Компилятор пожалуется с ошибки
- , если влюбой
case
не предваряетсяauto
или - , если
auto case
используется вauto
-Меньшеswitch
.
Есть ли проблема с парсером, которую можно ожидать, любые двусмысленности?
Есть ли дополнительная польза от ошибочных ошибок использования пользователей, таких как лучшие возможности оптимизации?
Update
Несколько более полезный вариант был бы, где место разрыва не так ясно:
case(expr) {
case 1:
if(isThisTrue) {
print(that);
} else {
break;
}
doSomethingElse();
if(!isThisTrue) {
break;
}
... или что-то вроде этого.
Я думаю, что предотвращение провала полезно для предотвращения некоторых трудностей для диагностики ошибок.
Почему 'auto' в начале лучше, чем' break' в конце? – alexeykuzmin0
@ alexeykuzmin0 это одна буква меньше, чем тип, и это будет еще одно ключевое слово с совершенно разными значениями, что делает C++ еще более сложным;) – user463035818
, потому что один недостающий разрыв трудно обнаружить компилятором. Но если вы решите использовать «автоматический переключатель», вы перестанете использовать «автоматический случай» - «эквивалент» «break». – towi