📜  dart 空检查 - Dart (1)

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

空检查 - Dart

在开发过程中,空值通常是一个常见的问题。Dart提供了一些方法和技巧来检查和处理null。这篇介绍会通过示例来展示Dart语言中的空检查。

空检查操作符

Dart中的空检查操作符可以快速地检查一个值是不是为null。这些操作符包括??,?.和!。

空合并操作符(??)

空合并操作符可以用于给定变量为null的情况下为变量设置默认值。比如:

var a;
var b = a ?? 'default value';

// b的值为'default value'

如果a为null,b会被赋值为默认值。

可选成员访问操作符(?.)

可选成员访问操作符可以用来处理多个级联操作中的null值。例如:

var a;
var b = a?.d?.e;

// 如果a或a.d为空,b将保持为null
非空断言操作符(!)

如果一个值在运行时不是null,则可以使用非空断言操作符将其强制转换为非null值。这会给编译器一个明确的信号,告诉它,你确定这个值不会为空。比如:

var a;
var b = a!.toUpperCase();

// 如果a为空,则会抛出异常
空安全

Dart 2.12及以上版本引入了空安全特性,这是一种将null的处理放在语言级别的严格结构,以确保变量未初始化的时候,编译器会在编译期间引发错误。

空安全类型

在空安全特性下,所有的变量都可以明确声明为非空或可空。声明为非空的变量在编译期间必须被初始化,否则编译器会发出错误。

String name = '张三'; // 声明一个非空的字符串变量
String? address; // 声明一个可空的字符串变量
空安全操作符

Dart还提供了一组特殊的空安全操作符,用于处理空值。这些操作符包括:

  • !:用来断言给定值不是null。
  • ?.:当给定值不为null时,可以访问其成员变量或成员方法。
  • ??:可以为null的值提供一个默认值。
String name = '张三';
String? address; 
String message = name.length.toString() + (address?.length ?? 0).toString(); 
结论

通过使用Dart的空检查操作符和空安全特性,可以帮助开发者编写更加健壮的程序。尽管空值是一个普遍存在的问题,但Dart提供的这些功能使得处理null变得轻松和安全。