はい。スイッチは言語ブロックのステートメントパターンを壊しますが、これは主に、Javaによって使用されるswitchステートメントが基づいているC/C++のためです。すべての3つの言語で
、switch文は次の形式を取ります。
switch(variable) {
case n:
statement 1;
statement n;
(optional) break;
case n+1:
statement 1;
statement n;
(optional) break;
// Optionally more statements
(optional) default:
statement 1;
statement n;
}
switch文は、伝統的な言語パターンを壊しているので、多くのプログラマは、伝統的なブロックのスタイルを用いた場合には、その複数のステートメントをラップ:{ }
これは、3つの言語すべてでほとんどの構文でブロックスタイルのステートメントを1つのステートメントと見なすことができるためです。switchステートメントでは、単一のケースで複数のステートメントを実行するブロックスタイルは必要ありません。
各ケースを区切るbreak文を使用しない場合は、 "fall through"が発生します。ケースnが一致して途切れていない場合、そのケース(n + 1ケース)のコードが実行されます。 1にブレークがなく、一致した場合、デフォルトコードが実行され、いずれもブレークがなかった場合、ケースn、ケースn + 1のコード、およびデフォルトが実行されます。
デフォルトはオプションで、switch文を実行するためのデフォルトアクションを指定します。通常、デフォルトの条件はジェネリックハンドラか、値が論理的にswitch文の値以外でない場合に例外をスローするのに適しています。ちょうど言って...それは、あなたがそれを自分でテストしている可能性がこの質問を書くためにあなたを要した時間で
String message = null;
int outerVariable = getOuterVariable();
switch(outerVariable) {
case n:
statement 1;
statement n;
break;
case n+1:
int innerVariable = getInnerVariable();
switch(innerVariable) {
case 1:
message = "IT WAS 1";
break;
default:
message = "WHY WOULD YOU DO THIS? OH THE HUMANITY!";
}
break;
// Optionally more statements
(optional) default:
statement 1;
statement n;
}
:
は、この不自然な例を見てみましょう、switchステートメント内で実行するswitch文を説明するために、 ... –私は、人の* nがアイデアをテストするためのコードを書く必要がないということが重要だと思います。 –
@ande_turner:いいえ。だから、人の代わりに物事をするのではなく、質問に答えるためにここにいる。 –