写点什么

关于 dart 中的 late 关键字,你了解多少?

作者:坚果
  • 2022 年 1 月 13 日
  • 本文字数:707 字

    阅读完需:约 2 分钟

作者:坚果

公众号:"大前端之旅"

华为云享专家,InfoQ 签约作者,阿里云专家博主,51CTO 博客首席体验官,开源项目GVA成员之一,专注于大前端技术的分享,包括 Flutter,小程序,安卓,VUE,JavaScript。


Dart 2.12 在变量中添加了 late 修饰符。这可以用于以下两种情况。


  • 将您的项目迁移到零安全。

  • 延时初始化一个变量。

1. 将您的项目迁移到零安全

在声明初始化的不可为空变量时可以使用late 修饰符。

例子

late String title;void getTitle(){title = 'Default';print('Title is $title');}
复制代码

注意:

在使用变量之前的后期确保变量稍后必须初始化。否则在使用变量时可能会遇到运行时错误。

2.延时初始化一个变量

这种延时初始化在以下情况下很方便。


  • 该变量可能不需要,并且初始化它的成本很高。

  • 您正在初始化一个实例变量,它的初始化程序需要访问它。


// This is the program's only call to _getResult().late String result = _getResult(); // Lazily initialized.
复制代码


在上面的示例中,如果从未使用过变量,则永远不会调用成本更高的 _getResult() 函数。


假设_getResult()是计算该结果的非常重要的函数。但是,如果我们将它分配给任何变量而不延时,那么_getResult()即使我们不使用它,每次都会执行。

没有 late 关键字

//STARTString result = _getResult();//END
复制代码


在上面的代码中,result 从未使用过,但_getResult()依旧会被执行。

使用 late 关键字

//STARTlate String result = _getResult();//END
复制代码


在上面的代码中_getResult()没有被执行,因为变量 result 从未使用过发现了没,它是使用 late 修饰符声明的。


好的,关于late关键字,我们就了解到这儿,这也是对自己的知识体系的一个梳理,如果你觉得还不错的话,可以点赞支持一下,谢谢。

发布于: 刚刚阅读数: 2
用户头像

坚果

关注

此间若无火炬,我便是唯一的光 2020.10.25 加入

公众号:“大前端之旅”,华为云享专家,InfoQ签约作者,51CTO博客首席体验官,专注于大前端技术的分享,包括Flutter,小程序,安卓,VUE,JavaScript。

评论

发布
暂无评论
关于dart中的late关键字,你了解多少?