运算符

Catalogue   
描述 运算符
一元后缀 表达式++ 表达式– () [] . ?.
一元前缀 -表达式 !表达式 ~表达式 ++表达式 –表达式
乘除法 * / % ~/
加减法 + -
位运算 << >> >>>
二进制与 &
二进制异或 ^
二进制或
关系和类型测试 >= > <= < as is is!
相等判断 == !=
逻辑与 &&
逻辑或 ||
空判断 ??
条件表达式 表达式 1 ? 表达式 2 : 表达式 3
级联 ..
?..
.. ?..
赋值 = *= /= += -= &= ^= 等等……

赋值操作符

1
2
b ??= value; // 如果 b 是 null,则 value 赋值给 b;
// 如果不是 null,则 b 的值保持不变

条件表达式

1
2
3
4
5
6
7
8
9
10

- `condition ? expr1 : expr2`

如果 *condition* 是 true,执行 *expr1* (并返回执行的结果); 否则执行 *expr2* 并返回其结果。

- `expr1 ?? expr2`

如果 *expr1* 不为null,返回其值; 否则执行 *expr2* 并返回其结果。


级联操作符

可以实现链式调用。

1
2
3
4
//StringBuffer write就是Java的append
var sb = new StringBuffer();
sb..write('foo')..write('bar');

安全操作符

1
2
3
4
String sb;
//空指针
print(sb.length);
print(sb?.length);

判断类型运算符

操作符 描述
as 类型转换
is 如果对象是指定类型则返回 true
is! 如果对象是指定类型则返回 false

其他运算符

运算符 名字 描述
() 使用方法 代表调用一个方法
[] 访问 List 访问 List 中特定位置的元素
. 访问成员 成员访问符
?. 条件访问成员 与上述成员访问符类似,但是左边的操作对象不能为 null,例如 foo?.bar,如果 foo 为 null 则返回 null ,否则返回 bar