Dartの演算子一覧です。
C系の言語と共通ですが、割り算の商を求めるときに「~/」という演算子、余りを求めるときに「%」という演算子があるのが特徴です。そのほか、nullじゃないほうを求める??条件演算子や、クラスのプロパティがある場合のみ動作する?.演算子、クラスのメンバを次々に呼び出せる..(カスケード演算子)などがあります。
算術演算子(四則演算)
| 演算子 | 動作 |
|---|---|
| + | 足し算 1+1 = 2 |
| – | 引き算 2-1 = 1 |
| * | 掛け算 4*3 = 12 |
| / | 割り算 100/3 = 33.33333・・・ |
| ~/ | 割り算の商 100~/3 = 33 |
| % | 割り算の余 100%3 = 1 |
| ++ | インクリメント var a=1; a++; /* aは2 a = a+1 と同じ */ |
| — | デクリメント var a=1; a–; /* aは0 a = a-1 と同じ*/ |
比較演算子
| 演算子 | 動作 |
|---|---|
| == | 等しい場合、真 |
| != | 等しくない場合、真 |
| > | 左辺が大きい場合、真 10 > 9は真、10>10は偽 |
| < | 右辺が大きい場合、真 9<10は真、10<10は偽 |
| >= | 左辺が右辺以上であれば真 |
| <= | 右辺が左辺以上であれば真 |
型テスト用演算子
| 演算子 | 動作 |
|---|---|
| as | 型をキャスト(変更)するための演算子ということになっているが、基本は、左辺の変数がその型に変換できるか確認するために使用する。型に変換できなかった場合は例外が返されるので、catchで捕捉できる。 // empがPersonでなければ例外発生。 (emp as Person).firstName = ‘Bob’; |
| is |
左辺の変数が右辺の型であった場合、true |
| is! | 左辺の変数が右辺の型でなかった場合、true |
ビット演算子
| 演算子 | 動作 |
|---|---|
| & | AND 0x0147 & 0x0111==0x0101 |
| | | OR 0x0147 | 0x0111==0x0157 |
| ^ | XOR 0x0147 ^ 0x0111==0x0056 |
| ~ | ビット反転(32bit) ~0x0147 == 0xFFFFFEB8 |
| << | 左シフト 4 << 2 == 8 |
| >> | 右シフト 4 >> 2 == 2 |
代入演算子
| 演算子 | 動作 |
|---|---|
| = | 右辺の値を左辺の変数に入れる。 a=2; // すると、a+1 == 3 |
| ??= | 右辺がnullの場合、左辺の値を入れる。 右辺がnullではない場合、右辺の値は変わらない。 int a; a ??= 1; // a はnullなので1が入る。 int b = 2; b ??= 3; // bは2のまま。 |
| += | 左辺に右辺を足して左辺に入れる。 int a = 1; a += 1; // a=2になる。a=a+1;と同じ |
| -= | 左辺に右辺を引いて左辺に入れる。 int a = 1; a -= 1; // a=0になる。a=a-1;と同じ |
| *= | 左辺に右辺をかけて左辺に入れる。 int a = 2; a *= 4; // a=8になる。a=a*4;と同じ |
| ~/= | 左辺に右辺を割った商を左辺に入れる。 int a = 10; a ~/= 3; // a=3になる。a=a~/3;と同じ |
| /= | 左辺に右辺を割った値を左辺に入れる。 double a = 10; a /= 3; // a=3.33333になる。a=a/3;と同じ |
| %= | 左辺に右辺を割った余りを左辺に入れる。 int a = 10; a %= 3; // a=1になる。a=a%3;と同じ |
| &= | 左辺と右辺を&した値左辺に入れる。 int a = 0x0147; a &= 0x0111; // a=0x0101になる。a=a&0x0111;と同じ |
| |= | 左辺と右辺を|した値左辺に入れる。 int a = 0x0147; a |= 0x0111; // a=0x0157になる。a=a|0x0111;と同じ |
| ^= | 左辺と右辺を^した値左辺に入れる。 int a = 0x0147; a ^= 0x0111; // a=0x0056になる。a=a^0x0111;と同じ |
| >>= | 左辺を右辺分右シフトした値が入る int a = 4; a >>= 1; // a=2になる。a=a>>1;と同じ |
| <<= | 右辺を左辺分右シフトした値が入る int a = 4; a <<= 1; // a=8になる。a=a<<1;と同じ |
論理演算子
| 演算子 | 動作 |
|---|---|
| !expr | 論理否定 bool a = true; a = !a; // aはfalse |
| || | 論理OR var a = 100; if (a == 10 || a == 100){ // aが10か100ならこの中へ } |
| && | 論理AND var a = 10; if (a > 1 && a <20){ // aが1より大きく 20より小さいならこの中へ } |
条件付き表現
| 演算子 | 動作 |
|---|---|
| 条件? 値1:値2 | 条件が真の場合、値1を偽の場合値2を返す。 var name=”ryoma”; // 名前がryomaだったらrealNameにnaonoriを返す。 // それ以外はunkownを返す var realName = (name == “ryoma”)?”naonori”:”unknown”; |
| 変数1 ?? 変数2 | 変数1がnullじゃなければ変数1を、変数1がnullであれば変数2を返す。 var name; var who = name ?? ‘ryoma’; // whoにはryomaが入る |
カスケード演算子
| 演算子 | 動作 |
|---|---|
| .. | オブジェクトのメンバを一区切りで呼び出せます。 // DOM操作的な。。 querySelector(‘#confirm’) ..text = ‘Confirm’ // Use its members. ..classes.add(‘important’) ..onClick.listen((e) => window.alert(‘Confirmed!’)); 上のコードは以下と同義です。 var button = querySelector(‘#confirm’); button.text = ‘Confirm’; button.classes.add(‘important’); button.onClick.listen((e) => window.alert(‘Confirmed!’)); |
その他演算子
| 演算子 | 動作 |
|---|---|
| () | 関数の呼び出し |
| [] | リストの要素取得 |
| . | オブジェクトのメンバー呼び出し |
| ?. | オブジェクトのメンバー呼び出し。 ただし、メンバーが存在しない場合はNULLを返す。 |