主题
运算符
| 描述 | 运算符 |
|---|---|
| 一元后缀 | *表达式*++ *表达式*-- () [] . ?. |
| 一元前缀 | -*表达式* !*表达式* ~*表达式* ++*表达式* --*表达式* |
| 乘除法 | * / % ~/ |
| 加减法 | + - |
| 位运算 | << >> >>> |
| 二进制与 | & |
| 二进制异或 | ^ |
| 二进制或 | ` |
| 关系和类型测试 | >= > <= < as is is! |
| 相等判断 | == != |
| 逻辑与 | && |
| 逻辑或 | ` |
| 空判断 | ?? |
| 条件表达式 | *表达式 1* ? *表达式 2* : *表达式 3* |
| 级联 | .. ?.. |
| 赋值 | = *= /= += -= &= ^= 等等…… |
运算符的优先级按行先后排列,即第一行优先级最高,最后一行优先级最低,而同一行中,最左边的优先级最高,最右边的优先级最低
类型判断元素符
| Operator | Meaning |
|---|---|
as | 类型转换(也用作指定类前缀) |
is | 如果对象是指定类型则返回 true |
is! | 如果对象是指定类型则返回 false |
级联运算符
可以让在同一个对象上连续调用多个对象的变量或方法
dart
var map = <int>[]
..add(1)
..add(2)
..forEach((item) => print(item)); // 1 2
// 会被编译成
var map = <int>[];
map.add(1);
map.add(2);
map.forEach((item) => print(item)); // 1 2使用 ?.. 则会保证不会在该空对象上进行任何操作
dart
var map = <int>[]
?..add(1)
..add(2)
..forEach((item) => print(item)); // 1 2
// 会被编译成
var map = <int>[];
map?.add(1);
map?.add(2);
map?.forEach((item) => print(item)); // 1 2级联可嵌套
