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