Section 1.8 条件分岐

System クラスの inputString メソッドで表示される入力ウィンドウにはボタンが2つあるよね。
なんか唐突だね…
うん、確かに『OK』と『キャンセル』っていう2つのボタンがあるね。
今回は、OK ボタンが押された時とキャンセルボタンが押された時とで、違う処理をするスクリプトを作ってみようと思うんだ。
それってもしかして条件分岐のこと?
うん、それ。よくわかったね。
KAG でも ifendif タグを使って条件分岐できるからね〜。
TJS で条件分岐するときも if なんだ。
あ、そうなの?
うん。まぁ endif は無いんだけどね。
TJS だと、こうやって条件分岐のスクリプトを書くんだ。

if を使った条件分岐(TJSスクリプト)>

if(条件)
{
    条件が真の時(条件が成り立つ時)に実行する処理
}

KAG スクリプトに置き換えるとこんな感じかな。

if タグを使った条件分岐(KAGスクリプト)>

[if exp="条件"]
条件が真の時(条件が成り立つ時)に実行する処理
[endif]

if の使い方は KAG の if タグに似てるね。
でしょ。
で、『条件』の部分には条件式を書くんだ。
条件式の書き方も基本的には KAG と同じで、例えばこんな感じ。

if の使用例>

var a = 1;
if(a == 1)
{
    System.inform("変数 a の値は 1 です。");
}

if(a == 1) ってのは、 変数 a の値が 1 だったら if の次の {} の間にあるスクリプトを実行するっていう意味ね。
じゃあこのスクリプトを実行すると「変数 a の値は 1 です。」っていうメッセージが表示されるってことだよね?
ん、そう。
あと、条件が成り立たなかった場合に実行する処理は else を使って書くんだ。
これも KAG の else タグと同じだね。
ん、そだね。
else の使い方はこう。

else を使った条件分岐(TJSスクリプト)>

if(条件)
{
    条件が真の時(条件が成り立つ時)に実行する処理
}
else
{
    条件が偽の時(条件が成り立たない時)に実行する処理
}

で、KAG スクリプトに置き換えるとこうかな。

else タグを使った条件分岐(KAGスクリプト)>

[if exp="条件"]
条件が真の時(条件が成り立つ時)に実行する処理
[else]
条件が偽の時(条件が成り立たない時)に実行する処理
[endif]

これも似てるね〜。
だね。
それから、条件を2つ以上指定したいときは else の後ろに if をつなげられるんだ。
こんなふうに。

<条件が複数ある場合の分岐(TJSスクリプト)>

if(条件1)
{
    条件1が真の時に実行する処理
}
else if(条件2)
{
    条件1が偽で、条件2が真の時に実行する処理
}
else
{
    条件1と条件2がどちらも偽の時に実行する処理
}

これは KAG だと、elsif タグを使って書けるよね。
えっと、KAG スクリプトに置き換えるとこうなるのかな?

<条件が複数ある場合の分岐(KAGスクリプト)>

[if exp="条件1"]
条件1が真の時に実行する処理
[elsif exp="条件2"]
条件1が偽で、条件2が真の時に実行する処理
[else]
条件1と条件2がどちらも偽の時に実行する処理
[endif]

うん、そうなるね。
じゃ、ここで1つ例をあげとくね。
うん。

ifelse を使った条件分岐の例>

var a = 1;
if(a == 1)
{
    System.inform("変数 a の値は 1 です。");
}
else if(a == 2)
{
    System.inform("変数 a の値は 2 です。");
}
else
{
    System.inform("変数 a の値は 1 と 2 以外の数です。");
}

このスクリプトを実行すると…?
変数 a1 に初期化されてるから、『a == 1』が成り立って、 「変数 a の値は 1 です。」って表示されるね。
ん。
じゃあ、a2 に初期化すると…?
今度は、『a == 1』は成り立たないけど、 次の『a == 2』が成り立つから、 「変数 a の値は 2 です。」って表示されるね。
ん、OK。
じゃ、a3 に初期化したら…?
a == 1』も『a == 2』も 成り立たなくなるから、else のとこのスクリプトが実行されて、 「変数 a の値は 1 と 2 以外の数です。」って表示されるよね。
うん、完璧だね。
条件分岐は KAG の書き方と似てたからね〜。
あと、TJS の場合は if とか else の中身の命令が1つだけだったら、 {} を省略して、こんなふうに書くこともできるんだ。

<括弧を省略した書き方>

var a = 1;
if(a == 1)
    System.inform("変数 a の値は 1 です。");
else if(a == 2)
    System.inform("変数 a の値は 2 です。");
else
    System.inform("変数 a の値は 1 と 2 以外の数です。");

ちょっと短く書けるようになったね。
うん。ただ、あんまり省略しすぎるとスクリプトが読みにくくなっちゃうことがあるから、 その辺は気をつけてね。
うん、わかった。
じゃ、今回はこれくらいにして、次回は条件分岐でよく使う演算子を紹介するね。
それって今回使った『==』とかのことだよね?
ん、そう。
あと、OK とキャンセルで違う処理をするスクリプトも書かなくちゃね。
あ、そっか。それが今回の目標だったもんね。
そうそう。
それじゃ、また次回ね。


前へ | TOP | 次へ