もし〜〜なら..(Switch文)

さて、条件で処理を分けるのにはif文を使用してきました。
ですが、たくさん条件を分けるにはちょっと不便ですよね?
例えばa〜zで処理を分けるときは26通りもif〜〜って書かなきゃないし。

そんなときはSwitch文です。
Switch文は、一つの変数に対して複数条件分岐するときに使用します。


Switch文の使い方

これ、結構特殊な文なんです。
まず例を示します。
Switch文の例
 1
2
3
4
5
6
7
8
9
10
11
12
a = 2;
Switch(a){
  case 0:
    Mes("aは0ですね。");
    break;
  case 1:
    Mes("aは1ですな。");
    break;
  case 2:
    Mes("aは2じゃぽーん!!");
    break;
}
今までにない雰囲気と心意気を持っています。
「case 0:」の部分が条件部分です。
勘のいい方はおわかりだと思いますが、aが0の時、「aは0ですね。」となります。
つまり、Switchの()の中の変数の値がcaseのあとに書かれている場合、その後に続く文が実行されます。

そして、重要なのは、「Break」です。
条件に当てはまったときに実行される文は、breakまでです。
C言語などでは書き忘れると次のcaseの内容まで実行してしまうんですね。よく書き忘れるんですよ。
ですが、Spinelの文構造上書かなくても次の文が実行されることはありません。
といっても、breakはつけるように心がけてください。


違うときは

ifで言うところのelseですが、Switch文にはdefaultというものがあります。
defaultはすべてのcaseの一番下に記述します。

defaultの例
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
a = 2;
Switch(a){
  case 0:
    Mes("aは0ですね。");
    break;
  case 1:
    Mes("aは1ですな。");
    break;
  case 2:
    Mes("aは2じゃぽーん!!");
    break;
  default:
    Mes("それ以外じゃ!");
    break;
}
defaultは、caseの条件に当てはまらないとき、実行されます。
また、文の構造上、breakを書きわすれた場合に、この文が実行されます。
つまり、上の例ではcase 0:でbreakを忘れた場合、case 0:が実行された後1,2は飛ばされたdefaultが実行される、ということです。

また、同時に複数の条件を指定したい場合は、「,」で条件を追加します。
複数条件指定
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
a = 2;
Switch(a){
  case 0,1,2:
    Mes("aは0か1か2ですね。");
    break;
  case 3:
    Mes("aは3ですな。");
    break;
  case 4:
    Mes("aは4じゃぽーん!!");
    break;
  default:
    Mes("それ以外じゃ!");
    break;
}
こんな具合です。
また、他の言語と違い、文字列を指定することもできますし、クラスを指定することもできます。
クラスを指定する
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Btn = CButton.Create;
Btn.Text = "Button";

Memo = CMemo.Create;
Memo.Text = "Memo";
Memo.Top = Btn.Height;

Obj = Memo;
Switch(Obj){
  case Btn:
    Btn.Text = "ボタン";
    break;
  case Memo:
    Memo.Text = "メモ";
    break;
}
前へ / index
プログラム言語「Spinel
Copyright © 2005 - Giemsa All Rights Reserved.
NOTES Software.