Switch

switchコマンドは、式がいくつかの値のいずれかに一致するかどうかをテストし、それに応じて分岐する特別な多方向意思決定者です。


構文

switch (expression) {case 1: . . . case 2: . . . case n: . .. [default: . . .]}

値は定数、識別子、文字列変数のいずれかです。 expressionが文字列変数の場合、大文字と小文字は区別されます(下記例を参照)。 いずれのcaseもbreakコマンドを必要とするため、以下のコマンドは実行されません。 デフォルトのcaseも使用でき、最後に指定する必要があります(switchコマンドを入れ子にするときは、デフォルトのcaseが最後に指定される必要があります)。 デフォルトのcaseは、他のcaseがマッチしない場合にのみ実行されます。

Note: case, default および to キーワードは大文字小文字を区別しません。

例:

サンプル1:

次のスクリプトはswitchコマンドを使用します。 switchコマンドの後の括弧内の式は変数 iiで評価値は2であるため、case 2が実行されます。 このスクリプトの結果はbです。

式が文字列に評価される場合、文字列の置換が必要ととなります。例)switch(%(COL(A[II]$))

ii=2;
switch (ii)
      {
            case 1:
                  type "a"; 
                  break;
            case 2:
                  type "b"; 
                  break;
            case 3:
                  type "c"; 
                  break;
            default:
                  type "none"; 
                  break;
      }

サンプル2:

次の例では、switchコマンドの後の括弧内の式は文字列変数であるため、評価では大文字と小文字が区別されます。 ただし、キーワードcase、default、toは大文字と小文字を区別しません。

GetString "Enter a string";   // 入力は%Bに入力される
switch (%B)  
      {
            CASE "a":
                  type -a "You entered an 'a'.";  
                  break;
            case "b": CASE "c":  
                  type -a "You entered a 'b' or 'c'.";
                  break;
            case "A":
                  type -a "You entered an 'A'.";
                  break;
            case "A" "B" "F" to "Z":
                  type -a "You entered 'A' or 'B' or between 'F' and 'Z'.";
                  break;
            case 1 2 5 to 7:
                  type -a "You entered 1 or 2 or between 5 and 7.";
                  break;
            default:
                  type -a "No match, this is the default case.";
                  break;
      }

語彙順序はAaBbCc ...なので、'b'と'B'はどちらも次のように見つけることができます。: case "A" to "C":

関連情報:

Break (command), If (command)


Continue (command), Document (command), Exit (command), For (command), Loop (command), Repeat (command),