タグ: モバイル編集 モバイルウェブ編集
編集の要約なし
 
(同じ利用者による、間の16版が非表示)
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.
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


==型一致演算子==
=型一致演算子=
型一致演算子<code>is</code>は、左辺の値の型が右辺の値の表す型と一致するか、右辺の値の型と一致する場合は<code>true</code>を、それ以外の場合は<code>false</code>を返します。次に例を示します。
型一致演算子<code>is</code>は、左辺の値の型が右辺の値の表す型と一致するか、右辺の値の型と一致する場合は<code>true</code>を、それ以外の場合は<code>false</code>を返します。次に例を示します。
  string str = "Hello,World";
  string str = "Hello,World";
152行目: 168行目:
  }
  }
  //出力:Hello,World
  //出力:Hello,World
==型変換演算子==
=型変換演算子=
型変換演算子<code>as</code>は、左辺の値を右辺の表す型に変換します。右辺は<code>type</code>型である必要があり、型変換に失敗した場合は<code>null</code>を返します。次に例を示します。
型変換演算子<code>as</code>は、左辺の値を右辺の表す型に変換します。右辺は<code>type</code>型である必要があり、型変換に失敗した場合は<code>null</code>を返します。次に例を示します。
  number num = 12345;
  number num = 12345;
print(num.type);//出力:NUMBER
  var str = (num as string);
  var str = (num as string);
  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);
165行目: 182行目:
  //現在の気温が32℃の場合 : todo=エアコンを入れる
  //現在の気温が32℃の場合 : todo=エアコンを入れる
上記の例では、現在の気温が30℃以上の場合、<code>todo</code>に「エアコンを入れる」が代入されます。
上記の例では、現在の気温が30℃以上の場合、<code>todo</code>に「エアコンを入れる」が代入されます。
この例のように、この条件演算子の構文は次のようになります。
この例のように、この条件演算子の構文は次のようになります。
 条件 ? 結果A : 結果B
条件 ? 結果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の両方が評価されることはありません。