switch文とfor文
switch文とは
変数キーを使って、処理を変える記述
var key:String="B"; var message:String; if(key=="A"){ message="AはAlphaのA" } else if(key=="B"){ message="BはBravoのB" } else if(key=="C"){ message="CはCharlieのC" } else{ message="知らない文字です"; } trace(message);
switch文に切り替え
var key:String="B"; var message:String; switch(key){ case"A"://ここはコロンで終わる message="AはAlphaのA"; break; case"B": message="BはBravoのB"; break; case"C": message="CはcharlieのC"; break; default: message="知らない文字です"; break; } trace(message);
参考:音を鳴らす
ifとの違い
switchでcaseに分岐する条件は、値が一致するかどうかです。
if(a==1)
のような、条件に「一致」を使うif文、elseif文が続いた時には、switch文に書き換えた方が見やすくなります。
ただし、より大きい、より小さい等と言った比較を分岐の条件にはできないので、そういうときにはif分を使うしかありません。
if文を利用した場合
if(diece==1){//1の時の処理 }else if(diece==2){//2の時の処理 }else if(diece==3){//3の時の処理 }else if(diece==4){//4の時の処理 }else if(diece==5){//5の時の処理 }else if(diece==6){//6の時の処理 }
switch文を利用した場合
switch(diece){ case 1://1の時の処理 break; case 2://2の時の処理 break; case 3://3の時の処理 break; case 4://4の時の処理 break; case 5://5の時の処理 break; case 6://6の時の処理 break; }
- switch文では分岐のために使う変数を()の中に描きます。
- 「caseキーワード」を使って、比較する値を書きます。「:コロン」を忘れないように。
- 変数がその値と一致した時におこないたい処理文を書きます。
- 処理は難行でも書く事が出来ます。
- 最後に「breakキーワード」を使って、処理を打ち切ります。
-
- 変数から該当するcaseを見つけて処理をさせる。
- breakでswitchのグループから抜け出す。
var key:String="B"; var message:String; switch(key){ case "A"; message="AはalphaのA"; case "B"; message="BはbravoのB"; case "C"; message="CはcharlieのC"; } trace(message);
switch文は、case"B"を見つけてジャンプする。
message="BはBravoのB";
を実行、
続けて、
message="CはcharlieのC";
ブロック内の処理を続けていく・・breakで止める
switch分で範囲を条件にしたい時
/*範囲による条件分岐の確認 switch分において、範囲で条件分岐させる事はtrueと条件式を利用する事で可能ですが、条件式の順番に気をつけないと期待通りに処理されない。 始めのswitch分と2つめのswitch分では正しく処理出来ますが、2つめのswitch文では正しく処理出来ない。 これは、処理が上から順に実行されるために起こる。 範囲を判定する時には、条件式の順番も注意深く設定する。 */ var age:Number=5; trace("年齢="+age);//年齢の表示 //正しく機能する例 trace("----------"); switch(true){ case(age<10)://10歳未満の処理 trace("10歳未満です"); break; case(age<20)://20代の処理 trace("10代です"); break; case(age<30)://30代の処理 trace("10歳未満です"); break; case(age>=30)://30代以上の処理 trace("30代以上です"); break; } //正しく機能しない例 trace("----------"); switch(true){ case(age>=30)://30代以上の処理 trace("30代以上です"); break; case(age<30)://20代の処理 trace("20代です"); break; case(age<20)://10代の処理 trace("10代です"); break; case(age<10)://10歳未満の処理 trace("10歳未満です"); break; } trace("----------");
二番目が間違っている理由は、上から順に実行されるため。
age:Number=5は
age<20に含まれる。traceの後breakで終了してしまう。