簡體   English   中英

dart“聲音null安全”功能中的“聲音”是什么意思?

[英]What does "sound" mean in dart "sound null safety" feature?

我了解null safety 這意味着默認情況下每個變量都不應該是 null。

但是null safetysound null safety有什么區別?

null 安全

Dart 程序可以包含一些 null 安全的庫和一些不安全的庫。 這些混合版本程序以不健全的 null 安全性執行。

聲音 null 安全

當一個程序完全遷移並且它的所有庫都是 null 安全時,它會以良好的 null 安全運行,並具有健全性支持的所有保證和編譯器優化。

參考

聲音的意思是有效的。 null safety是一個廣義術語, sound null safety意味着有效(使用或實施)null 安全。

簡化的“聲音” null 安全保證,除非您使用一些“黑客”之類的! 操作員,你永遠不會得到 null 異常。

您可以在此處閱讀更多信息: https://dart.dev/null-safety/understanding-null-safety

具體來說,這部分:

生成的 null 安全代碼應該是完全正確的。 static 檢查上下文中的“健全性”對不同的人意味着不同的事情。 For us, in the context of null safety, that means that if an expression has a static type that does not permit null, then no possible execution of that expression can ever evaluate to null. 該語言主要通過 static 檢查提供此保證,但也可能涉及一些運行時檢查。 (不過,請注意第一個原則:這些運行時檢查發生的任何地方都是您的選擇。)

穩健性對於用戶信心很重要。 一艘大部分時間都在漂浮的船並不是你熱衷於在公海中勇敢航行的船。 但這對於我們勇敢的編譯器黑客來說也很重要。 當語言對程序的語義屬性做出硬性保證時,這意味着編譯器可以執行假設這些屬性為真的優化。 當涉及到 null 時,這意味着我們可以生成更小的代碼,從而消除不必要的 null 檢查,並生成更快的代碼,無需在調用方法之前驗證接收器是否為非空。

一個警告:我們只保證 Dart 程序的健全性,這些程序是完全 null 安全的。 Dart 支持包含較新 null 安全代碼和較舊舊代碼混合的程序。 在這些混合版本的程序中,null 參考錯誤仍然可能出現。 在混合版本程序中,您在 null 安全的部分中獲得所有 static 安全優勢,但在整個應用程序是 Z37A6259CC0C1DAE299A7866489DFF0BD0 之前,您無法獲得完整的運行時健全性。

健全的 null安全性使代碼中的類型默認不可為空,並啟用特殊的 static 檢查和編譯器優化,以確保在運行時不會出現空解引用錯誤,因為它們將在編譯時被發現並修復。

Null 安全是面向對象編程語言中的保證,即沒有 object 引用將具有 null 或 void 值。 ...在這種情況下,上面的調用將是一個void調用,導致運行時異常,經常導致程序異常終止。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM