title: Dart 操作符date: 2021-07-15 11:02:24.064

updated: 2021-07-15 13:00:08.508
url: /?p=298
categories: Dart
tags:

操作符

操作符主要还是来看看Java所没有的。

类型判定操作符

asis、 和 is! 操作符是在运行时判定对象 类型的操作符

操作符 解释
as 类型转换
is 如果对象是指定的类型返回 True
is! 如果对象是指定的类型返回 False

as 操作符把对象转换为特定的类型,但是如果无法完成转换则会抛出一个异常

is 和Java中的 instanceof 相同

赋值操作符

=+=\=*=这些不必多说,还有一个 ??= (安全赋值)操作符用来指定 值为 null 的变量的值。

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

条件表达式

Dart 有两个特殊的操作符可以用来替代 if-else 语句:

-
condition ? expr1 : expr2

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

-
expr1 ?? expr2

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

级联操作符

级联操作符 (..) 可以在同一个对象上 连续调用多个函数以及访问成员变量。 使用级联操作符可以避免创建 临时变量, 并且写出来的代码看起来 更加流畅:

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

安全操作符

Dart提供了 ?.操作符。左边的操作对象 如果 为 null 则返回 null

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