返回

Dart 可空性的决定:a?[b] 或 a?.[b]

Android

Dart 正在重新设计它的类型系统,并且即将要加入可空类型和非空类型(这一点和 Kotlin 语言是极其的相似,正因为这种可空和非空的类型系统的严格划分,才能让 Kotlin 很好地避免 NPE 的问题)。

为什么要引入可空性?

  • 安全: 可空性可以帮助防止 NPE(空指针异常)。当一个变量或参数被声明为可空的时,编译器会强制你检查它是否为 null,然后再使用它。这有助于防止你的代码在运行时崩溃。
  • 清晰: 可空性可以使你的代码更清晰易读。当你知道一个变量或参数可以为 null 时,你就可以在代码中做出相应的处理。这有助于防止逻辑错误和意外行为。
  • 性能: 可空性可以提高你的代码的性能。当编译器知道一个变量或参数一定不会为 null 时,它就可以进行一些优化,比如内联函数调用和消除冗余的检查。

Dart 中的可空性语法

Dart 中的可空性语法有两种主要形式:

  • a?[b] :这种语法用于检查变量或参数是否为 null,然后执行相应的操作。如果变量或参数为 null,则执行操作 b;否则,执行操作 a。
  • a?.[b] :这种语法用于访问变量或参数的属性或方法。如果变量或参数为 null,则返回 null;否则,返回属性或方法的值。

以下是一些使用 Dart 可空性语法的示例:

// 检查变量是否为 null,然后执行相应的操作
String? name = null;
String message = name?[name.toUpperCase()] ?? "No name provided";

// 访问变量的属性或方法
Car? car = null;
int? speed = car?.speed;

// 调用变量的方法
Car? car = null;
car?.drive();

如何使用 Dart 可空性语法

以下是一些关于如何使用 Dart 可空性语法的建议:

  • 使用可空类型来声明变量和参数,除非你知道它们一定不会为 null。 这将有助于防止 NPE。
  • 在使用变量或参数之前,检查它们是否为 null。 这将有助于防止逻辑错误和意外行为。
  • 使用可空性语法来访问变量或参数的属性或方法。 这将有助于防止 NPE。
  • 尽量避免使用 ! 运算符来强制解包变量或参数。 这可能会导致 NPE。

Dart 可空性语法是一个强大的工具,可以帮助你编写更安全、更清晰、更高效的代码。通过遵循这些建议,你就可以充分利用 Dart 可空性语法。