Кто решил (и на основе каких понятий), что switch
конструкция (на многих языках) должна использоваться break
в каждом утверждении?
Почему мы должны написать что-то вроде этого:
switch(a)
{
case 1:
result = 'one';
break;
case 2:
result = 'two';
break;
default:
result = 'not determined';
break;
}
(заметил это в PHP и JS; возможно, есть много других языков, использующих это)
Если switch
есть альтернатива if
, почему мы не можем использовать ту же конструкцию, что и для if
? То есть:
switch(a)
{
case 1:
{
result = 'one';
}
case 2:
{
result = 'two';
}
default:
{
result = 'not determined';
}
}
Говорят, что break
предотвращает выполнение блока, следующего за текущим. Но действительно ли кто-то сталкивался с ситуацией, когда возникла необходимость выполнения текущего и последующих блоков? Я не Для меня break
всегда есть. В каждом блоке. В каждом коде.
case 'a': case 'A': case 'b': case 'B'
но в основном потому, что я не могу сделать case in [ 'a', 'A', 'b', 'B' ]
. Немного лучший вопрос, в моем текущем предпочтительном языке (C #), разрыв обязателен , и не существует неявного падения; забывание break
- синтаксическая ошибка ...: \
case TOKEN_A: /*set flag*/; case TOKEN_B: /*consume token*/; break; case TOKEN_C: /*...*/
break
он присутствует где-либо» - это значительно более простое правило для реализации, чем «Не испускать прыжок, если fallthrough
он присутствует в switch
».
CASE
оператор эквивалентно гигантскому блоку if / elseif.