操作符类型表
全文均摘录梳理自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 成员 |