操作符类型表
全文均摘录梳理自Dart中文网
| 描述 |
操作符 |
| unary postfix |
expr++ expr-- () [] . ?. |
| unary prefix |
-expr !expr ~expr ++expr --expr |
| multiplicative |
* / % ~/ |
| additive |
+ - |
| shift |
<< >> |
| bitwise AND |
& |
| bitwise XOR |
^ |
| bitwise OR |
| |
| relational and type test |
>= > <= < as is is! |
| equality |
== != |
| logical AND |
&& |
| logical OR |
|| |
| if null |
?? |
| conditional |
expr1 ? expr2 : expr3 |
| cascade |
.. |
| assignment |
= *= /= ~/= %= += -= <<= >>= &= ^= ??= |
算术操作符
| 操作符 |
解释 |
示例 |
| + |
加号 |
assert(2 + 3 == 5) |
| - |
减号 |
assert(3 - 2 == 1) |
| -expr |
负号 |
assert(2 - 3 == -1) |
| * |
乘号 |
assert(2 * 3 == 6) |
| / |
除号 |
assert(6 / 2 == 3) |
| ~/ |
除号,但是返回值为整数 |
assert(5 ~/ 2 == 2) |
| % |
取模 |
assert(5 % 2 == 1) |
类型判定的操作符
| 操作符 |
解释 |
| as |
类型转换 |
| is |
如果对象是指定的类型返回 True |
| is! |
如果对象是指定的类型返回 False |
if (emp is Person) { // Type check
emp.firstName = 'Bob';
}
//使用 as 操作符可以简化上面的代码:
(emp as Person).firstName = 'Bob';
注意: 上面这两个代码效果是有区别的。如果 emp 是 null 或者不是 Person 类型, 则第一个示例使用 is 则不会执行条件里面的代码,而第二个情况使用 as 则会抛出一个异常。
赋值操作符
"="表示赋值
a = value; // 给 a 变量赋值
b ??= value; // 如果 b 是 null,则赋值给 b;如果不是 null,则 b 的值保持不变
复合赋值操作符
//以 `+=` 举例
`a += b` 等同于 ` a = a + b`
逻辑操作符
| 操作符 |
逻辑 |
| !expr |
对表达式结果取反(true 变为 false ,false 变为 true) |
| || |
逻辑 OR |
| && |
逻辑 AND |
其他操作符
| Operator |
Name |
Meaning |
| () |
使用方法 |
代表调用一个方法 |
| [] |
访问 List |
访问 list 中特定位置的元素 |
| . |
访问 Member |
访问元素,例如 foo.bar 代表访问 foo 的 bar 成员 |
| ?. |
条件成员访问 |
和 . 类似,但是左边的操作对象不能为 null,例如 foo?.bar 如果 foo 为 null 则返回 null,否则返回 bar 成员 |