前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >《深入浅出Dart》空安全

《深入浅出Dart》空安全

作者头像
linwu
发布2023-07-27 20:13:14
2400
发布2023-07-27 20:13:14
举报
文章被收录于专栏:编程时光

现代JavaScript高级小册

深入浅出Dart

现代TypeScript高级小册

空安全

更强的类型系统,更少的错误

近些年来,编程语言的类型安全性已经成为软件开发社区的一个主要焦点。通过利用类型安全,开发人员可以更好地预防错误,简化代码,并提高程序的整体性能和可靠性。Dart是一个被设计为安全、可扩展和高效的现代化编程语言,近期其发布了一项重要的更新:空安全。

空安全是什么?

空安全是指编程语言的类型系统能够区分可为空的类型和不能为空的类型。这种区别可以防止空引用错误(Null Reference Errors),也称为 "null pointer exceptions" 或 "the billion-dollar mistake"。空引全错误是软件开发中最常见的错误之一,它们在运行时发生,常常会导致程序的崩溃或其他严重的问题。

Dart 的空安全

Dart 2.12 版本引入了空安全。在引入空安全之前,Dart 任何对象都可以为空。然而,这种设计虽然看起来灵活,但实际上会引起很多问题,尤其是当开发者假设某个值不会为空,但实际上它为空时。由于这样的错误通常在运行时才会被检测到,所以它们通常很难发现和修复。

空安全通过在类型系统级别防止这种错误的发生。Dart 的空安全类型系统区分了可空类型和非空类型。例如,String 类型的对象不能为 null,而 String? 类型的对象可以为 null。Dart 会在编译时检查代码,确保所有的非空类型的变量在使用之前都已经被初始化,并且不会被赋值为 null

如何在Dart中使用空安全?

使用Dart空安全主要涉及到两个方面:理解可空和非空类型,以及如何处理可能为空的值。

可空和非空类型

在空安全中,所有类型默认都是非空的。例如,如果你声明一个 String 类型的变量,Dart会假设它永远不会为空。如果你想声明一个可以为空的 String,你需要在类型后面加上 ?,如 String?

代码语言:javascript
复制
String nonNullableString = 'Hello, Dart!'; // 非空类型
String? nullableString = null; // 可空类型

处理可空值

当你处理一个可能为空的值时,Dart 提供了几种方式来帮助你。例如,你可以使用 ?? 操作符来提供一个默认值,当变量为空时,将会使用这个默认值。

代码语言:javascript
复制
String? nullableString = null;
String nonNullableString = nullableString ?? 'Default String'; // 如果

nullableString为null,那么将使用'Default String'

另外,Dart 也提供了 ?. 操作符,允许你在对象为空时跳过方法调用或属性访问,避免抛出空引用错误。

代码语言:javascript
复制
String? nullableString = null;
int? length = nullableString?.length; // 如果nullableString为null,那么length也将为null

结论

Dart 的空安全特性为开发者提供了一个强大的工具,可以在编译时就捕获和修复可能的空引用错误。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-07-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 空安全
    • 空安全是什么?
      • Dart 的空安全
        • 如何在Dart中使用空安全?
          • 可空和非空类型
          • 处理可空值
        • 结论
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档