Dart 2ベース--オペレータ
2966 ワード
Dart 2ベース–オペレータ
オペレータ
説明
オペレータ
一元接尾辞オペレータ
expr++ expr-- () [] . ?.
一元接頭辞オペレータ
-expr !expr ~expr ++expr --expr
乗算オペレータ
* / % ~/(除算、整数結果を返す)
加算
+ -
シフト
<>
ビットオペレータ
& ^ |
リレーションシップとタイプテスト
>= > <=
同等性
== !=
論理と、または
&& ||
空かどうかを判断する
??
条件テスト
expr1 ? expr2 : expr3
カスケード
..
に値を付ける
= *= /= ~/= %= += -= <<= >>= &= |= ^= ??=
タイプテストオペレータ
as、isとis! この3つのオペレータは、実行時にタイプを検出するのに非常に役立ちます.
オペレータ
釈義
as
タイプ変換(ライブラリの接頭辞を指定することもできます)
is
オブジェクトに指定したタイプがある場合はtrueを返します.
is!
オブジェクトに指定したタイプがある場合はfalseを返します.
asオペレータを使用して、オブジェクトを指定したタイプに変換します.通常、is条件テストを簡単に書くことができます.例えば、
if (emp is Person) {
// Type check
emp.firstName = 'Bob';
}
asオペレータを使用してコードを短縮できます.
(emp as Person).firstName = 'Bob';
割り当てオペレータ
=を使用して変数に値を割り当てます.値を割り当てる変数がnullの場合にのみ、変数に値を割り当てます.オペレータ.
// Assign value to a
a = value;
// Assign value to b if b is null; otherwise, b stays the same
b ??= value;
条件式
カスケード記号(.)
カスケード記号を使用すると、同じオブジェクトに対して一連の操作を行うことができます.関数呼び出しだけでなく、同じオブジェクトのフィールドにもアクセスできます.これにより、通常、一時的な変数を作成する手順を節約し、よりスムーズなコードを作成できます.次のコードを考慮します.
querySelector('#confirm') // Get an object.
..text = 'Confirm' // Use its members.
..classes.add('important')
..onClick.listen((e) => window.alert('Confirmed!'));
最初のメソッドquerySelector()の呼び出しは、セレクタオブジェクトを返します.カスケードシンボルの後ろのコードは、このセレクタオブジェクトに対して操作され、返される可能性のある後続の値は無視されます.上のコードは次のコードと同じです.
var button = querySelector('#confirm');
button.text = 'Confirm';
button.classes.add('important');
button.onClick.listen((e) => window.alert('Confirmed!'));
カスケード操作をネストすることもできます.たとえば、次のようにします.
final addressBook = (AddressBookBuilder()
..name = 'jenny'
..email = '[email protected]'
..phone = (PhoneNumberBuilder()
..number = '415-555-0100'
..label = 'home')
.build())
.build();
次のコードが間違っているなど、実際のオブジェクトを返す関数にカスケードを作成するには注意してください.
var sb = StringBuffer();
sb.write('foo')
..write('bar'); // Error: method 'write' isn't defined for 'void'.
なぜならsb.write()呼び出しはvoidを返し,void上でカスケード操作を構築することはできない.
条件付きメンバーアクセス方法(?.)
通過に類似するメンバーにアクセスしますが、一番左のオペレータはnullではありません.例:foo?barアクセスfooのbarプロパティfooがnullでない限り、fooがnullである場合、foo?barの値もnullです.