我是 Dart 和 Flutter 的新手。
在飛鏢中,使用之間有什么區別?和 !對于可為空的型別?
validator: ((value) {
if (value?.isEmpty) {
return "Field is required";
}
return null;
}),
validator: ((value) {
if (value!.isEmpty) {
return "Field is required";
}
return null;
}),
提前致謝!
uj5u.com熱心網友回復:
關于它的好話題:Dart 中的 Null Safety 是什么?
但簡而言之,您使用“?” 當您想允許該值為 null 并相應地使用它時,如下所示:
String? test;
if (test?.isEmpty == true) { // And is not null, but you don't need to check it
// If null, will never pass there but without error
}
并使用“!” 當你想確保有一個不可空的值時,像這樣:
String? test;
if (test!.isEmpty == true) { // Will throw an error
...
}
uj5u.com熱心網友回復:
兩者之間的區別,一個最初可以為空,但另一個不能。
我希望你能理解下面的例子。
要指定變數是否可以為 null,則可以使用可空型別 ?
運算子,讓我們看一個例子:
String? carName; // initialized to null by default
int? value = 36; // initialized to non-null
value = null; // can be re-assigned to null
注意:您不需要在使用前初始化可空變數。它默認初始化為 null。
斷言運算子 (!)
使用空斷言運算子 ( ! ) 讓 Dart 將可空運算式視為不可空運算式(如果您確定它不為空)。
int? someValue = 30;
int data = someValue!; // This is valid as value is non-nullable
在上面的例子中,我們告訴 Dart 變數 someValue 為 null,將它賦值給一個不可為 null 的變數即 data 是安全的
我希望你明白????
至于你的例子;
如果你注意到,驗證器 {String? value} 值最初可以為空。但是您撰寫的代碼中兩者之間的唯一區別是運行成本。“?” 重新定義它會花費一些時間。因為它已經在函式中宣告它將 null 作為開始。
uj5u.com熱心網友回復:
這是一個很好的問題,答案就在這里。“?” 這意味著它將在以后獲得價值,或者它可以為空(最初或在任何情況下)例如
細繩?車名;
- '!' 這意味著您將收到該值并且它不能為空。如果值為空,它將檢查該值,它將給出例外。
查看示例以了解明顯的區別:
串列?塊; ... // 您不確定 blocks 變數是否已初始化。// 塊可以為空。最終塊?block = blocks?.first;
// 你確定 blocks 變數已經初始化。// 塊不可為空。final Block block = blocks!.first;
如果是,希望你明白了 如果你有問題,請接受答案或評論我
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/535033.html
標籤:扑镖移动的
