作者:堅(jiān)果
公眾號:"大前端之旅"
華為云享專家,InfoQ簽約作者,,阿里云專家博主,,51CTO博客首席體驗(yàn)官,開源項(xiàng)目GVA成員之一,,專注于大前端技術(shù)的分享,,包括Flutter,小程序,安卓,VUE,,JavaScript,。
Dart 2.12 在變量中添加了late修飾符。這可以用于以下兩種情況,。
將您的項(xiàng)目遷移到零安全,。
延時初始化一個變量。
1. 將您的項(xiàng)目遷移到零安全
在聲明初始化的不可為空變量時可以使用late
修飾符,。
例子
late String title;
void getTitle(){
title = 'Default';
print('Title is $title');
}
注意:
在使用變量之前的后期確保變量稍后必須初始化,。否則在使用變量時可能會遇到運(yùn)行時錯誤。
2.延時初始化一個變量
這種延時初始化在以下情況下很方便,。
// This is the program's only call to _getResult().
late String result = _getResult(); // Lazily initialized.
在上面的示例中,如果從未使用過變量,,則永遠(yuǎn)不會調(diào)用成本更高的 _getResult() 函數(shù),。
假設(shè)_getResult()
是計算該結(jié)果的非常重要的函數(shù)。但是,如果我們將它分配給任何變量而不延時,,那么_getResult()
即使我們不使用它,,每次都會執(zhí)行。
沒有 late關(guān)鍵字
//START
String result = _getResult();
//END
在上面的代碼中,,result從未使用過,,但_getResult()
依舊會被執(zhí)行。
使用 late關(guān)鍵字
//START
late String result = _getResult();
//END
在上面的代碼中_getResult()
沒有被執(zhí)行,,因?yàn)樽兞縭esult從未使用過發(fā)現(xiàn)了沒,,它是使用late修飾符聲明的。
好的,,關(guān)于late
關(guān)鍵字,,我們就了解到這兒,這也是對自己的知識體系的一個梳理,。