「式」の版間の差分
編集の要約なし |
編集の要約なし |
||
(同じ利用者による、間の14版が非表示) | |||
1行目: | 1行目: | ||
{{Alert|この記事のより新しい版が[https://docs.wsoft.ws/products/alice/general/expression/ WSOFTDocs]にあります。AliceScriptWikiでは、この記事はもう更新されません。||04}} | |||
[[Category:基本]] | [[Category:基本]] | ||
式は、AliceScriptにおけるもっとも重要かつ基本的な要素です。AliceScriptにおいて、ほとんどのものは式で記述されます。ここでは式を値があるものすべてと定義します。 | 式は、AliceScriptにおけるもっとも重要かつ基本的な要素です。AliceScriptにおいて、ほとんどのものは式で記述されます。ここでは式を値があるものすべてと定義します。 | ||
12行目: | 14行目: | ||
代入演算子は、AliceScriptでおそらく最も頻繁に使用されるであろう演算子です。これは指定された変数に値を代入します。次の例を参照してください。 | 代入演算子は、AliceScriptでおそらく最も頻繁に使用されるであろう演算子です。これは指定された変数に値を代入します。次の例を参照してください。 | ||
var a = 1; | var a = 1; | ||
この例は<code>a</code>という名前の変数に<code>1</code>を代入するということを意味しています。また、<code>var</code> | この例は<code>a</code>という名前の変数に<code>1</code>を代入するということを意味しています。また、<code>var</code>キーワードを使うと変数の宣言を、省略すると変数に代入します。さらに、複数の変数への代入を同時に行うこともできます。次に例を示します。 | ||
var a = b = 1; | var a = b = 1; | ||
==算術演算子== | ==算術演算子== | ||
次の演算子は、数値型の変数を使用して算術演算を実行します。 | 次の演算子は、数値型の変数を使用して算術演算を実行します。 | ||
31行目: | 34行目: | ||
print(++x); //出力:3 | print(++x); //出力:3 | ||
===デクリメント演算子=== | ===デクリメント演算子=== | ||
単項デクリメント演算子<code>—</code>は変数を一つずつデクリメントします。デクリメントとは、その値から1を減算することを指します。デクリメント演算子には後置デクリメント演算子<code>x++</code>と前置デクリメント演算子<code>++x</code>があります。 | 単項デクリメント演算子<code>—-</code>は変数を一つずつデクリメントします。デクリメントとは、その値から1を減算することを指します。デクリメント演算子には後置デクリメント演算子<code>x++</code>と前置デクリメント演算子<code>++x</code>があります。 | ||
====後置デクリメント演算子==== | ====後置デクリメント演算子==== | ||
次の例に示すように、<code>x++</code>の結果は<code>x</code>のデクリメント前の値です。 | 次の例に示すように、<code>x++</code>の結果は<code>x</code>のデクリメント前の値です。 | ||
44行目: | 47行目: | ||
print(++x); //出力:2 | print(++x); //出力:2 | ||
print(++x); //出力:1 | print(++x); //出力:1 | ||
===単項プラス演算子と単項マイナス演算子=== | ===単項プラス演算子と単項マイナス演算子=== | ||
単項プラス演算子<code>+</code>ではその値が返されます。単項マイナス演算子<code>-</code>ではその値の否定が返されます。 | 単項プラス演算子<code>+</code>ではその値が返されます。単項マイナス演算子<code>-</code>ではその値の否定が返されます。 | ||
62行目: | 66行目: | ||
print(4/2);//出力:2 | print(4/2);//出力:2 | ||
===べき乗演算子=== | ===べき乗演算子=== | ||
べき乗演算子<code>**</code> | べき乗演算子<code>**</code>は1つ目の値を2つ目の値乗した値を返します。 | ||
print(2**2);//出力:4 | print(2**2);//出力:4 | ||
===複合代入=== | ===複合代入=== | ||
二項演算子を<code>op</code>と置いた場合、 | 二項演算子を<code>op</code>と置いた場合、 | ||
78行目: | 83行目: | ||
==文字列連結== | ==文字列連結== | ||
一方または両方の値が文字列型の場合、<code>+</code>演算子によってその値の文字列表現が連結されます。次に例を示します。 | 一方または両方の値が文字列型の場合、<code>+</code>演算子によってその値の文字列表現が連結されます。次に例を示します。 | ||
print("Hello,"+"World."); | |||
//出力:Hello,World. | |||
==配列の連結または追加== | ==配列の連結または追加== | ||
左辺の変数が配列型の場合、右辺が配列型ならその配列が連結され、それ以外の型なら左辺の配列に右辺の項目が追加されます。次に例を示します。 | 左辺の変数が配列型の場合、右辺が配列型ならその配列が連結され、それ以外の型なら左辺の配列に右辺の項目が追加されます。次に例を示します。 | ||
87行目: | 94行目: | ||
==デリゲートの組み合わせ== | ==デリゲートの組み合わせ== | ||
左辺と右辺の両方がデリゲート型の場合、左辺のデリゲートと右辺のデリゲートが結合された新しいデリゲートが返されます。次に例を示します。 | 左辺と右辺の両方がデリゲート型の場合、左辺のデリゲートと右辺のデリゲートが結合された新しいデリゲートが返されます。次に例を示します。 | ||
var del1 = | var del1 = ()=>{ | ||
print(”Hello”); | print(”Hello”); | ||
}; | }; | ||
var del2 = | var del2 = ()=>{ | ||
print(“World”); | print(“World”); | ||
}; | }; | ||
98行目: | 105行目: | ||
//出力:Hello | //出力:Hello | ||
// World | // World | ||
==ラムダ演算子== | |||
ラムダ演算子<code>=></code>は、[[デリゲート#ラムダ式|ラムダ式]]の定義時に、左側の引数指定部と右側の式本体を分ける機能を持ち、それ以外の機能はありません。詳細については、[[デリゲート#ラムダ式|ラムダ式]]を参照してください。 | |||
==等値演算子== | ==等値演算子== | ||
等値演算子は左右の値が等しいかどうかを判断し、それに応じた値を返します。 | 等値演算子は左右の値が等しいかどうかを判断し、それに応じた値を返します。 | ||
130行目: | 139行目: | ||
print(true&false);//出力:false | print(true&false);//出力:false | ||
===論理和演算子=== | ===論理和演算子=== | ||
論理和(論理OR)演算子<code>|<code>または<code>||</code>は、左右の値の少なくとも一方が<code>true</code>と評価された場合に<code>true</code>を返し、それ以外の場合に<code>false</code>を返します。<code>|</code>演算子と<code>||</code>演算子との唯一の違いは後者は左辺が<code>true</code>と評価された場合右辺の評価は行われないことです。次に例を示します。 | 論理和(論理OR)演算子<code>|</code>または<code>||</code>は、左右の値の少なくとも一方が<code>true</code>と評価された場合に<code>true</code>を返し、それ以外の場合に<code>false</code>を返します。<code>|</code>演算子と<code>||</code>演算子との唯一の違いは後者は左辺が<code>true</code>と評価された場合右辺の評価は行われないことです。次に例を示します。 | ||
print(true|false); //出力:true | print(true|false); //出力:true | ||
print(false|false);//出力:false | print(false|false);//出力:false | ||
===排他的論理和演算子=== | ===排他的論理和演算子=== | ||
排他的論理和(論理XOR)演算子<code>^</code>は、左右の値が異なると評価された場合(すなわち、片方が<code>true</code>と評価されたならばもう片方が<code>false</code>と評価される場合)に<code>true</code>を返し、それ以外の場合は<code>false</code>を返します。次に例を示します。 | 排他的論理和(論理XOR)演算子<code>^</code>は、左右の値が異なると評価された場合(すなわち、片方が<code>true</code>と評価されたならばもう片方が<code>false</code>と評価される場合)に<code>true</code>を返し、それ以外の場合は<code>false</code>を返します。次に例を示します。 | ||
138行目: | 148行目: | ||
print(true^true); //出力:false | print(true^true); //出力:false | ||
=Null合体演算子= | =Null合体演算子= | ||
==Null合体演算子== | |||
Null合体演算子<code>??</code>は、左の値が<code>null</code>でない場合その値を返し、それ以外の場合は右の値が評価され返されます。次に例を示します。 | Null合体演算子<code>??</code>は、左の値が<code>null</code>でない場合その値を返し、それ以外の場合は右の値が評価され返されます。次に例を示します。 | ||
var v = “ABC”; | var v = “ABC”; | ||
143行目: | 154行目: | ||
v = null; | v = null; | ||
print(v??”Hello,World”);//出力:Hello,World | print(v??”Hello,World”);//出力:Hello,World | ||
==Null合体代入演算子== | |||
Null合体代入演算子<code>??=</code>は、その値が<code>null</code>と評価された場合のみ右辺の値を代入し、それ以外の場合は何もしません。次に例を示します。 | |||
var v = null; | |||
v ??= "Hello,World"; | |||
print(v);//出力:Hello,World | |||
=型一致演算子= | =型一致演算子= | ||
159行目: | 175行目: | ||
print(str.type);//出力:STRING | print(str.type);//出力:STRING | ||
=条件演算子= | =条件演算子= | ||
条件演算子(三項条件演算子)は、論理式を評価し、論理式の評価結果(<code>true</code>または<code>false</code>)に応じて続く二つの式のいずれかの結果を返します。まずは次の例を参照してください。 | 条件演算子(三項条件演算子)<code>?:</code>は、論理式を評価し、論理式の評価結果(<code>true</code>または<code>false</code>)に応じて続く二つの式のいずれかの結果を返します。まずは次の例を参照してください。 | ||
string todo = 現在の気温 > 30.0 ? "エアコンを入れる" : "エアコンを切る"; | string todo = 現在の気温 > 30.0 ? "エアコンを入れる" : "エアコンを切る"; | ||
print("todo={0}",todo); | print("todo={0}",todo); | ||
166行目: | 182行目: | ||
//現在の気温が32℃の場合 : todo=エアコンを入れる | //現在の気温が32℃の場合 : todo=エアコンを入れる | ||
上記の例では、現在の気温が30℃以上の場合、<code>todo</code>に「エアコンを入れる」が代入されます。 | 上記の例では、現在の気温が30℃以上の場合、<code>todo</code>に「エアコンを入れる」が代入されます。 | ||
この例のように、この条件演算子の構文は次のようになります。 | この例のように、この条件演算子の構文は次のようになります。 | ||
条件 ? 結果A : 結果B | |||
<code>条件</code>式は、論理式で<code>true</code>または<code>false</code>のどちらかと評価される必要があります。<code>条件</code>が<code>true</code>と評価された場合は、<code>結果A</code>の式が評価され、<code>条件</code>が<code>false</code>と評価された場合は、<code>結果B</code>の式が評価され、それらの結果が演算の結果として返されます。結果Aと結果Bの両方が評価されることはありません。 | <code>条件</code>式は、論理式で<code>true</code>または<code>false</code>のどちらかと評価される必要があります。<code>条件</code>が<code>true</code>と評価された場合は、<code>結果A</code>の式が評価され、<code>条件</code>が<code>false</code>と評価された場合は、<code>結果B</code>の式が評価され、それらの結果が演算の結果として返されます。結果Aと結果Bの両方が評価されることはありません。 | ||