[英]Using variable as Boolean in conditional statement in Dart
我在從 Python 學習 Dart 之后,我想知道 Dart 最接近於在條件語句中使用非布爾變量作為 Boolean 的條件是什么。 就像使用空字符串為false
而非空字符串為true
的字符串一樣。
例如,在 Python 中:
name = 'Yes'
print('True' if name else 'False') // 'True'
name2 = ''
print('True' if name else 'False') // 'False'
Dart 是否有類似的東西而不必將變量轉換為 Boolean 語句?
我認為這樣的代碼甚至不會編譯。 dart
中的類型檢查往往非常嚴格,每當編譯嘗試評估非bool
類型的條件時,都會引發錯誤。 例如,以下內容不會編譯:
final String value = "truthyValue" ? "truth" : "dare";
相反, dart
在許多內置類型(如字符串、不同容器等)上提供了isNonEmpty
和isEmpty
方法,因此您可以執行類似someString.isNotEmpty? "good": "bad";
someString.isNotEmpty? "good": "bad";
.
Dart無法在測試中使用非布爾值。 沒有任何。 做不到。
測試位置中允許的唯一表達式是具有 static 類型的表達式:
bool
dynamic
的(隱式向下轉換為bool
,就好像后面跟着as bool
,如果它實際上不是bool
,則會在運行時拋出。)Never
,它總是在產生值之前拋出。 bool
類型,在非空安全代碼中可以評估為null
。 如果發生這種情況,測試也會在運行時拋出。
因此,對於任何測試,如果測試表達式的計算結果不是bool
,它就會拋出。 您只能在實際的bool
true
或false
上進行分支。
如果你有一個值,你想將null
和空都視為假,我會這樣做: if (value?.isEmpty?? false)...
如果您需要處理特定值(例如“0”或“00000”),您可以在任何類型上編寫擴展。 我非常喜歡它,因為它對任何解析都很方便,而且如果你把它命名得好,它是可讀的。
extension BoolTest on String? {
bool get toBool {
if (this == null) {
return false;
} else {
return true;
}
}
}
然后你只需像這樣使用它:
String? a = 'hello';
String? b;
print(a.toBool); // true
print(b.toBool); // false
print('hello'.toBool) // true
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.