カテゴリー

Dart 演算子 一覧

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 と同じ*/
Dart 算術演算子 一覧

比較演算子

演算子 動作
== 等しい場合、真
!= 等しくない場合、真
> 左辺が大きい場合、真
10 > 9は真、10>10は偽
< 右辺が大きい場合、真
9<10は真、10<10は偽
>= 左辺が右辺以上であれば真
<= 右辺が左辺以上であれば真
Dart 比較演算子 一覧

型テスト用演算子

演算子 動作
as 型をキャスト(変更)するための演算子ということになっているが、基本は、左辺の変数がその型に変換できるか確認するために使用する。型に変換できなかった場合は例外が返されるので、catchで捕捉できる。
// empがPersonでなければ例外発生。
(emp as Person).firstName = ‘Bob’;
is

左辺の変数が右辺の型であった場合、true
// “as”は例外が発生するが、こっちはわかりやすい 
if (emp is Person) { // empがPerson型だったら
  emp.firstName = ‘Bob’;
}

is! 左辺の変数が右辺の型でなかった場合、true
Dart 型テスト用演算子 一覧

ビット演算子

演算子 動作
& AND
0x0147 & 0x0111==0x0101
| OR
0x0147 | 0x0111==0x0157
^ XOR
0x0147 ^ 0x0111==0x0056
~ ビット反転(32bit)
~0x0147 == 0xFFFFFEB8
<< 左シフト
4 << 2 == 8
>> 右シフト
4 >> 2 == 2
Dart ビット演算子

代入演算子

演算子 動作
= 右辺の値を左辺の変数に入れる。
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;と同じ
Dart 代入演算子一覧

論理演算子

演算子 動作
!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より小さいならこの中へ
}
Dart 論理演算子

条件付き表現

演算子 動作
条件? 値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が入る
Dart 条件式一覧

カスケード演算子

演算子 動作
.. オブジェクトのメンバを一区切りで呼び出せます。

// 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!’));
Dart カスケード演算子

その他演算子

演算子 動作
() 関数の呼び出し
[] リストの要素取得
. オブジェクトのメンバー呼び出し
?. オブジェクトのメンバー呼び出し。
ただし、メンバーが存在しない場合はNULLを返す。
Dart その他演算子