Dart的一些语法糖(持续更新)

语法糖 ?. 与 ??

  • dart 语法糖 ?.
dart 语法糖 ?.

它的意思是左边如果为空返回 null,否则返回右边的值。

A?.B
如果 A 等于 null,那么 A?.B 为 null
如果 A 不等于 null,那么 A?.B 等价于 A.B

void main() {
  Animal animal = new Animal('cat');
  Animal empty = null;
  
  //animal 非空,返回 animal.name 的值 cat
  print(animal?.name);
  //empty 为空,返回 null
  print(empty?.name);
  
  //animal 非空,可以直接访问 animal.name 的值 cat
  print(animal.name);
  //empty 为空,抛出异常
  print(empty.name);
}

class Animal {
  final String name;
  Animal(this.name);
}

运行后会看到如下输出:
cat
null
cat
Uncaught exception:
Cannot read property 'get$name' of null
  • dart 语法糖 ??
dart 语法糖 ??
它的意思是左边如果为空返回右边的值,否则不处理。

A??B
如果 A 等于 null,那么 A??B 为 B
如果 A 不等于 null,那么 A??B 为 A

以上面为例子,假设我们上面要求当 empty 为空时,默认值输出 unknown。
那么可以修改如下:
//empty 为空,返回 null
print(empty?.name);
改为:
//empty 为空,本来要返回 null,由于有 ??,返回 unknown
print(empty?.name??'unknown')


b ??= 'hello';
如果b为null的情况下,b等于hello。如果不为null则不作任何操作

你可能感兴趣的:(Dart的一些语法糖(持续更新))