ホーム >> 左脳ActionScript3 >> リファレンス(仮) >> ステートメント >> switchステートメント
switchステートメント
同じような式で多数のifステートメントの記述をする場合、switchステートメントで記述する事で、簡素になりコードが見易くなる場合がある。
制御そのものは、ifステートメントで記述する事が可能。

  • caseステートメント

    
    switch ( 式 ) {
     case 値1 : サブステートメント1;
     case 値2 : サブステートメント2;
     case 値3 : サブステートメント3;
    }
    
    式を評価した値が、各caseステートメントに記述されている値と一致した場合、その直後のサブステートメントから実行される。
    また、どのcaseステートメントの値も一致しなかった場合、全てのサブステートメントは実行されずに無視される事になる。

    ここで注意!!
    caseステートメントでの条件が満たされた場合、そのcaseステートメント以降の全てのサブステートメントが実行されるのだ。
    仮に、式の値が値2だった場合、サブステートメント2から実行され、引き続きサブステートメント3も実行される。式の値が値1だった場合、上記の例では全てのサブステートメントが実行される事になる。

  • breakステートメント

    値によって条件を振り分ける多くの場合、この制御では不便な事になってしまう。そこで、breakステートメントでswitchブロックを抜ける記述を追加しなければならない。
    
    switch ( 式 ) {
     case 値1 :
      サブステートメント1;
      break;
     case 値2 :
      サブステートメント2;
      break;
     case 値3 :
      サブステートメント3;
      break;
    }
    
    caseステートメント以下のサブステートメントの最後にbreakステートメントを追加する事により、サブステートメントの連続実行を抑えることが出来る。
    上記の記述で、式の値が値1の場合はサブステートメント1のみが実行され、値2の時はサブステートメント2のみが実行される。
    値3の場合は、それ以降の条件記述が無い為、breakステートメントが無くとも制御の流れに変わりはない。

  • defaultステートメント

    全てのcaseステートメントの値に一致しなかった場合にのみ制御をする記述もある。
    
    switch ( 式 ) {
     case 値1 :
      サブステートメント1;
      break;
     case 値2 :
      サブステートメント2;
      break;
     case 値3 :
      サブステートメント3;
      break;
     default:
      デフォルトサブステートメント;
    }
    
    defaultステートメントは、switchステートメント内のcaseステートメントの条件が全て満たされなかった場合に実行される。

    上記の場合は、式の値が、値1、値2、値3のいずれでもなかった時、デフォルトサブステートメントに処理が移る。
    更にこの場合、値3のサブステートメント3の後のbreakステートメントが無いと、式の値が値3だった場合に、サブステートメント3実行後デフォルトステートメントに処理が移ってしまう。
    その為、breakステートメントの配置に注意する事。

  • その他

    caseステートメント、defaultステートメントの記述は、値の順番通りでなくとも良い。任意の順で記述する事が出来る。
    順番を工夫し、意図的にbreakステートメントを外す事で、複雑なフローを実現する事も可能。

ホーム >> 左脳ActionScript3 >> リファレンス(仮) >> ステートメント >> switchステートメント