📜  Dart – 空感知运算符(1)

📅  最后修改于: 2023-12-03 15:00:20.253000             🧑  作者: Mango

Dart – 空感知运算符

在dart中,null安全是一个非常重要的概念。通常情况下,我们需要使用条件语句来检查对象是否为null,以避免程序崩溃。但是,使用空感知运算符,我们的代码可以更加简洁、易读。

空感知运算符是什么?

空感知运算符(null aware operator)是用来简化null检查的语法糖。它能够用更加简洁的代码实现null判断,从而避免了一些重复的代码。

如何使用空感知运算符?

空感知运算符包括以下几个:

  • ?. 如果前面的对象为null,则返回null,否则执行后面的属性或方法。
  • ?? 如果前面的对象为null,则返回后面的默认值。
  • ??= 如果前面的对象为null,则将后面的值赋给前面的对象。

以下是一个示例代码:

class Person {
  String? name;
}

void main() {
  Person? person;
  
  // 使用 ?. 运算符
  var name1 = person?.name;
  print(name1); // 输出:null
  
  person = Person();
  
  // 使用 ?. 运算符
  var name2 = person?.name;
  print(name2); // 输出:null
  
  // 使用 ?? 运算符
  var name3 = person?.name ?? 'Unknown';
  print(name3); // 输出:Unknown
  
  // 使用 ??= 运算符
  person ??= Person();
  person.name ??= 'John Doe';
  print(person.name); // 输出:John Doe
}

在上面的示例代码中,我们首先定义了一个Person类,其中包含一个可空的name属性。在main函数中,我们定义了一个可空的Person对象person。然后,我们使用空感知运算符来获取person对象的name属性,如果person为null,则返回null,否则返回name属性的值。在第二次调用时,由于person不是null,因此返回了Unknown字符串。

接下来,我们使用空感知运算符和默认值运算符来获取person对象的name属性,如果person为null,则返回Unknown字符串。最后,我们使用默认赋值运算符??=来判断person对象是否为null,如果是,则创建一个新的Person对象,并将其赋值给person。然后,我们使用默认赋值运算符来判断person.name属性是否为null,如果是,则将John Doe字符串赋给它。

小结

空感知运算符让我们的代码更加简洁、易读。使用它可以避免一些重复的null判断代码,从而使我们的代码更加优雅。