关于dart中的late关键字,你了解多少?#yyds干货盘点#

Posted 大前端之旅

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于dart中的late关键字,你了解多少?#yyds干货盘点#相关的知识,希望对你有一定的参考价值。



作者:坚果

公众号:undefined大前端之旅undefined

华为云享专家,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 programs only call to _getResult().
late String result = _getResult(); // Lazily initialized.

在上面的示例中,如果从未使用过变量,则永远不会调用成本更高的 _getResult() 函数。 假设​​_getResult()​​是计算该结果的非常重要的函数。

但是,如果我们将它分配给任何变量而不延时,那么​​_getResult()​​即使我们不使用它,每次都会执行。

没有late

//START
String result = _getResult();
//END

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


使用 late

//START
late String result = _getResult();
//END

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

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

关于dart中的late关键字,你了解多少?#yyds干货盘点#

以上是关于关于dart中的late关键字,你了解多少?#yyds干货盘点#的主要内容,如果未能解决你的问题,请参考以下文章

Java 并发编程解析 | 关于线程机制的那些事,你究竟了解多少?

Flutter 里的语法糖解析,知其所然方能潇洒舞剑

关于Java 中的 Lambda 表达式你了解多少?

关于Java 中的 Lambda 表达式你了解多少?

关于元宇宙你了解多少?

即使我在 initState 中初始化变量,Dart 也会抛出 LateInitializationError