Dart【08】常见运算符

66 阅读1分钟

?

int? a = 0 对象可为空

!

a! 强制拆包,告诉编译器a一定不为空

late

late 延迟初始化,告诉编译器使用前一定不为空

??=

// b如果是空,将value赋值给b
b ??= value;
​

??

*表达式 1* ?? *表达式 2* 如果表达式 1 为非 null 则返回其值,否则执行表达式 2 并返回其值

?.

?. 条件访问成员 与上述成员访问符类似,但是左边的操作对象不能为 null,例如 foo?.bar,如果 foo 为 null 则返回 null ,否则返回 bar

?..

querySelector('#confirm') // Get an object.
  ?..text = 'Confirm' // Use its members.
  ..classes.add('important')
  ..onClick.listen((e) => window.alert('Confirmed!'));

版本提示:

?.. 运行在 2.12 和以上的 版本 中可用。

上面的代码相当于:

var button = querySelector('#confirm');
button?.text = 'Confirm';
button?.classes.add('important');
button?.onClick.listen((e) => window.alert('Confirmed!'));
// 如果p不为空,访问p.y
var a = p?.y;