各ステートメントで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ブロックと同等に扱います。