編集の要約なし
編集の要約なし
9行目: 9行目:
ここでの<code>=</code>は代入演算子と呼ばれる演算子です。これは一つあるいは二つあるいは複数の値の操作に用いられます。
ここでの<code>=</code>は代入演算子と呼ばれる演算子です。これは一つあるいは二つあるいは複数の値の操作に用いられます。
AliceScriptには多数の演算子が用意されています。これらの演算子の多くは標準でAliceScriptに組み込まれていて、変数や値を使用して基本的な操作を実行できます。演算子には次のものがあります。
AliceScriptには多数の演算子が用意されています。これらの演算子の多くは標準でAliceScriptに組み込まれていて、変数や値を使用して基本的な操作を実行できます。演算子には次のものがあります。
====代入演算子====
===代入演算子===
代入演算子は、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;
====算術演算子====
===算術演算子===
次の演算子は、数値型の変数を使用して算術演算を実行します。
次の演算子は、数値型の変数を使用して算術演算を実行します。
 
====インクリメント演算子====
=====インクリメント演算子=====
単項インクリメント演算子<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>のインクリメント前の値です。
  var x = 1;
  var x = 1;
25行目: 24行目:
  print(x++); //出力:1
  print(x++); //出力:1
  print(x++); //出力:2
  print(x++); //出力:2
 
=====前置インクリメント演算子=====
======前置インクリメント演算子======
次の例に示すように、<code>++x</code>の結果は<code>x</code>のインクリメント後の値です。
次の例に示すように、<code>++x</code>の結果は<code>x</code>のインクリメント後の値です。
  var x = 1;
  var x = 1;
32行目: 30行目:
  print(++x); //出力:2
  print(++x); //出力:2
  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>のデクリメント前の値です。
  var x = 3;
  var x = 3;
41行目: 38行目:
  print(x++); //出力:3
  print(x++); //出力:3
  print(x++); //出力:2
  print(x++); //出力:2
 
=====前置デクリメント演算子=====
======前置デクリメント演算子======
次の例に示すように、<code>++x</code>の結果は<code>x</code>のデクリメント後の値です。
次の例に示すように、<code>++x</code>の結果は<code>x</code>のデクリメント後の値です。
  var x = 3;
  var x = 3;
48行目: 44行目:
  print(++x); //出力:2
  print(++x); //出力:2
  print(++x); //出力:1
  print(++x); //出力:1
 
====単項プラス演算子と単項マイナス演算子====
=====単項プラス演算子と単項マイナス演算子=====
単項プラス演算子<code>+</code>ではその値が返されます。単項マイナス演算子<code>-</code>ではその値の否定が返されます。
単項プラス演算子<code>+</code>ではその値が返されます。単項マイナス演算子<code>-</code>ではその値の否定が返されます。
次の例を参照してください。
次の例を参照してください。
  print(1);  //出力:1
  print(+1);  //出力:1
  print(-1); //出力:-1
  print(-1); //出力:-1
 
====加算演算子====
=====加算演算子=====
加算演算子<code>+</code>はその値の和を返します。
加算演算子<code>+</code>はその値の和を返します。
  print(1+1);//出力:2
  print(1+1);//出力:2
 
====減算演算子====
=====減算演算子=====
減算演算子<code>-</code>はその値の差を返します。
減算演算子<code>-</code>はその値の差を返します。
  print(2-1);//出力:1
  print(2-1);//出力:1


=====乗算演算子=====
====乗算演算子====
乗算演算子<code>*</code>はその値の積を返します。
乗算演算子<code>*</code>はその値の積を返します。
  print(2*4);//出力:8
  print(2*4);//出力:8


=====除算演算子=====
====除算演算子====
除算演算子<code>/</code>はその値の商を返します。
除算演算子<code>/</code>はその値の商を返します。
  print(4/2);//出力:2
  print(4/2);//出力:2


=====べき乗演算子=====
====べき乗演算子====
べき乗演算子<code>**</code>は一つ目の値を二つ目の値乗した結果を返します。
べき乗演算子<code>**</code>は一つ目の値を二つ目の値乗した結果を返します。
  print(2**2);//出力:4
  print(2**2);//出力:4


=====複合代入=====
====複合代入====
二項演算子を<code>op</code>と置いた場合、
二項演算子を<code>op</code>と置いた場合、
  x op= y;
  x op= y;
88行目: 81行目:
  a -= 1;
  a -= 1;
  print(a);//出力:2
  print(a);//出力:2
 
===文字列連結===
====文字列連結====
一方または両方の値が文字列型の場合、<code>+</code>演算子によってその値の文字列表現が連結されます。次に例を示します。
一方または両方の値が文字列型の場合、<code>+</code>演算子によってその値の文字列表現が連結されます。次に例を示します。
 print("Hello,"+"World.");//出力:Hello,World.
 print("Hello,"+"World.");//出力:Hello,World.
 
===配列の連結または追加===
====配列の連結または追加====
 
左辺の変数が配列型の場合、右辺が配列型ならその配列が連結され、それ以外の型なら左辺の配列に右辺の項目が追加されます。次に例を示します。
左辺の変数が配列型の場合、右辺が配列型ならその配列が連結され、それ以外の型なら左辺の配列に右辺の項目が追加されます。次に例を示します。
  var arr = [“a”,”b”];
  var arr = [“a”,”b”];
100行目: 90行目:
  arr += “c”;
  arr += “c”;
  print(arr);//出力:a,b,c
  print(arr);//出力:a,b,c
 
===デリゲートの組み合わせ===
====デリゲートの組み合わせ====
左辺と右辺の両方がデリゲート型の場合、左辺のデリゲートと右辺のデリゲートが結合された新しいデリゲートが返されます。次に例を示します。
左辺と右辺の両方がデリゲート型の場合、左辺のデリゲートと右辺のデリゲートが結合された新しいデリゲートが返されます。次に例を示します。
  var del1 = _(){
  var del1 = _(){
114行目: 103行目:
  //出力:Hello
  //出力:Hello
  //    World
  //    World
 
===等値演算子===
等値演算子は左右の値が等しいかどうかを判断し、それに応じた値を返します。
====等値演算子====
====等値演算子====
等値演算子は左右の値が等しいかどうかを判断し、それに応じた値を返します。
=====等値演算子=====
等値演算子<code>==</code>または<code>===</code>は左右の値が等しい場合は<code>true</code>を返し、それ以外の場合は<code>false</code>を返します。次に例を示します。
等値演算子<code>==</code>または<code>===</code>は左右の値が等しい場合は<code>true</code>を返し、それ以外の場合は<code>false</code>を返します。次に例を示します。
  print(1==1);//出力:true
  print(1==1);//出力:true
=====非等値演算子=====
====非等値演算子====
非等値演算子<code>!=</code>または<code>!==</code>は左右の値が異なる場合は<code>true</code>を返し、それ以外の場合は<code>false</code>を返します。この演算子は等値演算子の論理反転と捉えることができます。次に例を示します。
非等値演算子<code>!=</code>または<code>!==</code>は左右の値が異なる場合は<code>true</code>を返し、それ以外の場合は<code>false</code>を返します。この演算子は等値演算子の論理反転と捉えることができます。次に例を示します。
  print(1!=2);//出力:true
  print(1!=2);//出力:true
====比較演算子====
===比較演算子===
関係演算子とも呼ばれていて、その値の比較に使用されます。これらの演算子は数値型のみに使用することができます。
関係演算子とも呼ばれていて、その値の比較に使用されます。これらの演算子は数値型のみに使用することができます。
=====小なり演算子=====
====小なり演算子====
小なり演算子<code><</code>は、左側の値が右側の値より小さい場合は<code>true</code>を、それ以外の場合は<code>false</code>を返します。次に例を示します。
小なり演算子<code><</code>は、左側の値が右側の値より小さい場合は<code>true</code>を、それ以外の場合は<code>false</code>を返します。次に例を示します。
  print(1<2);//出力:true
  print(1<2);//出力:true
=====大なり演算子=====
====大なり演算子====
大なり演算子<code>></code>は、左側の値が右側の値より大きい場合は<code>true</code>を、それ以外の場合は<code>false</code>を返します。次に例を示します。
大なり演算子<code>></code>は、左側の値が右側の値より大きい場合は<code>true</code>を、それ以外の場合は<code>false</code>を返します。次に例を示します。
  print(2>1);//出力:true
  print(2>1);//出力:true
=====以下演算子=====
====以下演算子====
以下演算子<code><</code>は、左側の値が右側の値以下である場合は<code>true</code>を、それ以外の場合は<code>false</code>を返します。次に例を示します。
以下演算子<code><</code>は、左側の値が右側の値以下である場合は<code>true</code>を、それ以外の場合は<code>false</code>を返します。次に例を示します。
  print(1<=2);//出力:true
  print(1<=2);//出力:true
=====以上演算子=====
====以上演算子====
以上演算子<code>></code>は、左側の値が右側の値以上である場合は<code>true</code>を、それ以外の場合は<code>false</code>を返します。次に例を示します。
以上演算子<code>></code>は、左側の値が右側の値以上である場合は<code>true</code>を、それ以外の場合は<code>false</code>を返します。次に例を示します。
  print(2>=1);//出力:true
  print(2>=1);//出力:true
====論理演算子====
===論理演算子===
次の演算子は、ブール型の値について論理演算を行います。
次の演算子は、ブール型の値について論理演算を行います。
=====論理否定演算子=====
====論理否定演算子====
論理否定演算子<code>!</code>は、単項の接頭辞でその値の論理否定が計算されます。次に例を示します。
論理否定演算子<code>!</code>は、単項の接頭辞でその値の論理否定が計算されます。次に例を示します。
  print(!true);//出力:false
  print(!true);//出力:false
=====論理積演算子=====
====論理積演算子====
論理積(論理AND)演算子<code>&</code>または<code>&&</code>は、左右の値の両方が<code>true</code>と評価された場合のみ<code>true</code>を返し、それ以外の場合<code>false</code>を返します。<code>&</code>演算子と<code>&&</code>演算子との唯一の違いは後者は左辺が<code>false</code>と評価された場合右辺の評価は行われないことです。次に例を示します。
論理積(論理AND)演算子<code>&</code>または<code>&&</code>は、左右の値の両方が<code>true</code>と評価された場合のみ<code>true</code>を返し、それ以外の場合<code>false</code>を返します。<code>&</code>演算子と<code>&&</code>演算子との唯一の違いは後者は左辺が<code>false</code>と評価された場合右辺の評価は行われないことです。次に例を示します。
  print(true&true); //出力:true
  print(true&true); //出力:true
  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>を返します。次に例を示します。
  print(true^false);//出力:true
  print(true^false);//出力:true
  print(true^true); //出力:false
  print(true^true); //出力:false
====Null合体演算子====
===Null合体演算子===
Null合体演算子<code>??</code>は、左の値が<code>null</code>でない場合その値を返し、それ以外の場合は右の値が評価され返されます。次に例を示します。
Null合体演算子<code>??</code>は、左の値が<code>null</code>でない場合その値を返し、それ以外の場合は右の値が評価され返されます。次に例を示します。
  var v = “ABC”;
  var v = “ABC”;
160行目: 148行目:
  v = null;
  v = null;
  print(v??”Hello,World”);//出力:Hello,World
  print(v??”Hello,World”);//出力:Hello,World
====条件演算子====
===条件演算子===
条件演算子(三項条件演算子)は、論理式を評価し、論理式の評価結果(<code>true</code>または<code>false</code>)に応じて続く二つの式のいずれかの結果を返します。まずは次の例を参照してください。
条件演算子(三項条件演算子)は、論理式を評価し、論理式の評価結果(<code>true</code>または<code>false</code>)に応じて続く二つの式のいずれかの結果を返します。まずは次の例を参照してください。
  string todo = 現在の気温 > 30.0 ? "エアコンを入れる" : "エアコンを切る";
  string todo = 現在の気温 > 30.0 ? "エアコンを入れる" : "エアコンを切る";
174行目: 162行目:
AliceScriptRC1時点で、条件演算子に複数の条件演算が含まれる処理は実行できません。つまり、次の式は正しく評価することができません。
AliceScriptRC1時点で、条件演算子に複数の条件演算が含まれる処理は実行できません。つまり、次の式は正しく評価することができません。
  a ? b : c ? d : e
  a ? b : c ? d : e
=====条件演算子とIf文=====
====条件演算子とIf文====
条件演算子を使用すると、いままでIf文を使用して行ってきたことの一部を簡潔な形で書き直すことができます。If文と条件演算子を状況に応じて使い分けると、よりコードが読みやすくなります。次の例を参照してください。
条件演算子を使用すると、いままでIf文を使用して行ってきたことの一部を簡潔な形で書き直すことができます。If文と条件演算子を状況に応じて使い分けると、よりコードが読みやすくなります。次の例を参照してください。
  if(今日の天気 == 晴れ) 
  if(今日の天気 == 晴れ)