运算符

描述运算符
一元后缀表达式++ 表达式– () [] . ?.
一元前缀-表达式 !表达式 ~表达式 ++表达式 –表达式
乘除法* / % ~/
加减法+ -
位运算<< >> >>>
二进制与&
二进制异或^
二进制或|
关系和类型测试>= > <= < 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