У меня есть такой оператор переключения:
switch(a) {
case 0:
// do something
break;
case 1:
// do something else
break;
}
Я хочу выполнить оба блока кода, например, при a == 2
. Я хотел бы написать что-то вроде этого:
switch(a) {
case 0:
case 2:
// do something
break;
case 1:
case 2:
// do something else
break;
}
но очевидно, что это не работает, потому что первый оператор break завершает весь оператор switch.
Единственный способ, который я мог придумать, - это написать вспомогательные функции:
function case0() {
// do something
}
function case1() {
// do something else
}
switch(a) {
case 0:
case0();
break;
case 1:
case1();
break;
case 2:
case0();
case1();
break;
}
Мне это решение кажется немного многословным и некрасивым. Есть ли лучший способ достичь того, чего я хочу?
switch
утверждения достаточно сложны. Вы предлагаете изменить то, как они работают на фундаментальном уровне. Почему бы не использовать таблицу сопоставления, в которой вы можете иметь ссылки на функции?{ 2: function() { ... } }
например. - person tadman   schedule 27.07.2016switch
, заключается в том, что я построил свой проект наswitch
операторах, и я не хочу переписывать все это во что-то другое, чтобы иметь возможность делать то, что я описал. - person BoltKey   schedule 27.07.2016