式
式は、AliceScriptにおけるもっとも重要かつ基本的な要素です。AliceScriptにおいて、ほとんどのものは式で記述されます。ここでは式を値があるものすべてと定義します。
変数に定数を代入するもっとも単純な例を次に示します。
a = 1;
以上の例は、変数a
に1
を代入します。1
は、明らかに1という値です。言い換えると1
は1という値を表す式なのです。
AliceScriptには多数の演算子が用意されています。これらの演算子の多くは標準でAliceScriptに組み込まれていて、変数や値を使用して基本的な操作を実行できます。演算子はおよそ次のグループに分けられます。
・算術演算子
・比較演算子
・論理演算子
+および+=演算子
・文字列の連結
左辺または両方の変数が文字列型の場合、+演算子によってその変数の文字列(あるいは文字列表現)が連結されます
print("Hello,"+"World.");
・配列の連結または追加
左辺の変数が配列型の場合、+=演算子によって配列が連結されるか、あるいは末尾に項目が追加されます
・イベントの組み合わせ
左辺がイベントオブジェクトかつ右辺がデリゲート型の場合、+=演算子によってイベントが呼び出されるとすでに登録されているデリゲートを呼び出してから右辺のデリゲートを呼び出すようにイベントオブジェクトに追加します。
・加算代入演算子としての+=
次のような式があるとします
x+=y
上記の式は、次の式と同じです。
x=x+y
ただし、xが評価されるのは一度だけです。
?:演算子
?:演算子(三項条件演算子)は、論理式を評価し、論理式の評価結果(TrueまたはFalse)に応じて続く二つの式のいずれかの結果を返します。
まずは次の例を参照してください。
string todo = 現在の気温 > 30.0 ? "エアコンを入れる" : "エアコンを切る"; print("todo={0}",todo); //出力例 //現在の気温が20℃の場合 : todo=エアコンを切る //現在の気温が32℃の場合 : todo=エアコンを入れる
上記の例では、現在の気温が30℃以上の場合、todoに「エアコンを入れる」が代入されます。 この例のように、この条件演算子の構文は次のようになります。
条件 ? 結果A : 結果B
条件
式は、論理式でTrueまたはFalseのどちらかと評価される必要があります。条件
がTrueと評価された場合は、結果A
の式が評価され、条件
がFalseと評価された場合は、結果B
の式が評価され、それらの結果が演算の結果として返されます。結果Aと結果Bの両方が評価されることはありません。
AliceScriptRC1時点で、条件演算子に複数の条件演算が含まれる処理は実行できません。つまり、次の式は正しく評価することができません。
a ? b : c ? d : e
条件演算子とIf文
条件演算子を使用すると、いままでIf文を使用して行ってきたことの一部を簡潔な形で書き直すことができます。If文と条件演算子を状況に応じて使い分けると、よりコードが読みやすくなります。次の例を参照してください。
if(今日の天気 == 晴れ) {
todo = "公園に行き";
} else {
todo = "家にい";
} print("今日は、{0}ます。",todo); //出力例 //今日の天気が晴れの場合 : 今日は、公園に行きます。 //今日の天気が曇りの場合 : 今日は、家にいます。
上記の例は、現在の天気が晴れであれば、todoに「公園に行き」が代入され、「今日は、公園に行きます。」が表示されます。 それ以外の場合では、todoに「家にい」が代入され、「今日は、家にいます。」が表示されます。
このコードを条件演算子を用いた書き方にすると次の例のようになります。
(今日の天気 == 晴れ) ? todo = "公園に行き" : todo = "家にい"; print("今日は、{0}ます。",todo);
これはただ単にIf文を条件演算子に書き換えただけで、あまりよい使用方法とは言えません。条件演算子の値を返すという特性を使用すれば、次の例のように書き換えることもできます。
todo = (今日の天気 == 晴れ) ? "公園に行き" : "家にい"; print("今日は、{0}ます。",todo);
上記の例のように左辺に対して条件演算の結果を代入したほうが、より簡潔かつ分かりやすくなります。条件演算子をまだよく理解していない人のためにコメントを書いておくとより良いでしょう。
条件演算子は行数を短くするよりも、他の人がコードを読んだときに簡単に理解できるようになることを期待して導入されました。基本的には、If文を使用し、条件演算子はそれを使用することで簡潔にわかりやすくなる場合のみ使用するべきです。