谁决定(并基于什么概念)在每个语句中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块。