2017-03-24 9 views
0

擬似コードswitch文はほとんどの言語で実装されているのはなぜですか?

int i=10 

switch(i) 
    case 1: 
    print(1); 
    case 10: 
    print(10); 
    case 20: 
    print(20); 

直感的に、これは10を印刷することが予想される。しかしので、break文が存在しない、これは10と20

誰が、これは、エラーのような感じだと思うんを印刷します言語?

+0

いいえ、フォールスルーの場合は、参考にすることができます。 'switch'sにマッチするパターンと、' literalals 'にマッチする 'switch'sパターンが混在していないことを確認してください。 – Carcigenicate

答えて

2

switchステートメントですべての言語でフォールスルーが許可されているわけではありません。ウィキペディアにはbrief sectionがあります。

  • C(C、C++、Objective-Cの)家族は、Pascalの家族が
  • Perlがデフォルトではないものではありませんが、continueキーワードを含めることによって、それをすることによって求めることができ、デフォルトでは
  • て秋ができます(C以外のJavaに近い)
  • C#は、すべてのcaseブロックを終了しますが、一緒にグループの空のブロックにあなたをできるようにするbreakが必要です:
  • スウィフトはを通じて秋を許可し、強力なパターンマッチングシステムを持っていない、加えて、を要求するまでを網羅しています。

switchステートメントにはさまざまな要件があります。すべての言語が同じではありません!カップルの小さな例:

// C# 
switch (i) { 
    case 1: 
    case 2: 
     // you can group empty case blocks together 
     break;  // but must end with break 
    case 3: 
     // do something else 
     break; 
} 

// Swift 
switch i { 
    case 1:   // match 1 
    case 2,3:  // match 2 or 3 
    case 4...10: // match 4 to 10 (inclusive) 
    case let n where n % 2 == 0: // match an even number and assign it to n 
    default:  // must be exhaustive 
} 

も参照してください:彼らは多くの場合、虐待を受けているもののAppropriate uses of fall-through switch statements

関連する問題