Хто вирішив (і базуючись на яких поняттях), що 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.