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 // “as”は例外が発生するが、こっちはわかりやすい if (emp is Person) { // empがPerson型だったら emp.firstName = ‘Bob’; } |
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を返す。 |