カテゴリー

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 その他演算子