日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

dart系列之:安全看我,dart中的安全特性null safety

發布時間:2024/2/28 编程问答 60 豆豆
生活随笔 收集整理的這篇文章主要介紹了 dart系列之:安全看我,dart中的安全特性null safety 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 簡介
  • Non-nullable類型
  • Nullable List Of Strings 和 List Of Nullable Strings
  • !操作符
  • late關鍵字
  • 總結

簡介

在Dart 2.12中引入了null safety的新特性,也就是說dart程序中默認類型都是非空的,除非你顯示告訴編譯器,這個類型可以為空。

看起來是一個小小的改動,但是這個小小的改動導致了很多Dart包的大版本升級,從而導致使用Dart2.12之前的版本跟使用dart2.12之后的版本完全就是兩個不同的世界。

真的這么奇妙嗎?一起來看看Dart 2.12 null safety的特性吧。

Non-nullable類型

在感受Non-nullable類型之前,我們先看一段代碼:

void main(){String name;print('name is $name.'); }

代碼很簡單,我們定義了一個String類型的name字符串,然后在print語句中打印它。

如果你是在dart 2.12版本之前,那么是沒有問題的。

但是到了2.12,則會報錯:

The non-nullable local variable 'name' must be assigned before it can be used.Try giving it an initializer expression, or ensure that it's assigned on every execution path.

意思就是說,name是非空的,你必須要給他賦個值。

通過強制不為空,保證了代碼的安全性,非常好用。

那么如果name就可以為空怎么處理呢?

別急,我們可以給可以為空的類型后面加上?即可:

void main(){String? name;print('name is $name.'); }

Nullable List Of Strings 和 List Of Nullable Strings

假如我們要創建一個List,list里面包含的是String,則可以這樣創建:

List<String> aListOfStrings = ['one', 'two', 'three'];

在dart 2.12中,非空檢查也被用到了泛型中,所以,默認情況下List中的String也不能為空,如果非要為空,則需要這樣寫:

List<String?> aListOfNullableStrings = ['one', null, 'three'];

對于list本身來說,它也是不能為空的,如果要為空,則需要這樣寫:

List<String>? aNullableListOfStrings;

!操作符

如果你認為某個對象在使用的時候確定不是null,那么可以在表達式后面添加!,如下所示:

String? word;word = aListOfNullableStrings.first;print(word!.length);

late關鍵字

有時候,我們知道某個對象一定不是空,但是目前來說,并不能立刻對其進行賦值,這時候就需要使用到late關鍵字。

下面是一個用到late的例子:

class Team {late final Coach coach; }class Coach {late final Team team; }void main() {final myTeam = Team();final myCoach = Coach();myTeam.coach = myCoach;myCoach.team = myTeam;print('All done!'); }

上面的代碼中,我們有兩個類互相引用,但是兩個類都是不為空的,如果不使用late,則會編譯失敗。

使用late就可以在后面合適的時候對類中的屬性進行初始化,從而保證代碼的運行。

總結

以上就是dart 2.12中新增加的null safety的使用。

本文已收錄于 http://www.flydean.com/24-dart-null-safety/

最通俗的解讀,最深刻的干貨,最簡潔的教程,眾多你不知道的小技巧等你來發現!

歡迎關注我的公眾號:「程序那些事」,懂技術,更懂你!

總結

以上是生活随笔為你收集整理的dart系列之:安全看我,dart中的安全特性null safety的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。