我需要幫助來理解以下代碼。為什么即使 !test 等于 true,它也會列印“yes”。謝謝
var test: Bool = false
if !test {
print("yes")
}
if !test == true {
print("oky")
}
print(!test)
Console:
yes
oky
true
uj5u.com熱心網友回復:
- “test”變數定義為默認值“false”。
- “if !test”等于“if !test == true”,在這兩種情況下,您的測驗都被否定,這意味著“假”變為“真”,這就是執行列印的原因。
我想補充一點,有些開發人員很難理解負面邏輯。以下是此類邏輯運算式的一些示例。
需要時間處理的邏輯示例:
- view.isHidden = !isLoading
- view.isHidden = !hasData
- view.isHidden = !canAdd
- view.idHidden = !(data?.isEmpty ?? true)
- view.isHidden = !hasChanges
可能的解決方案是:
- 在視圖中創建“isVisible”
- 否則使用
有一篇很棒的文章深入威脅了這個主題:
永遠不要避免消極的邏輯
如果你想善待那些與布爾邏輯關系受到挑戰的人,請盡量避免負面的表述和否定。
uj5u.com熱心網友回復:
test 等于 false,正如您在第一行中所定義的那樣。
如果陳述句為假,非運算子 (!) 回傳真,如果陳述句為真,則回傳假。
由于 test 等于 false,!test 等于 true。
if (!test) 和 if (!test == true) 這兩個條件都滿足,因為 !test 為真,因此列印文本。
uj5u.com熱心網友回復:
因為如果之后的條件if為真,則命令將被執行。
這些行是等效的:
if !test {
if !test == true {
我認為您可能會將 的值test與 的值混淆!test。Not 運算子否定它所作用的任何值,在本例中為變數test。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/426042.html
上一篇:TableViewSearchBar不起作用:索引超出范圍
下一篇:SwiftUI-拼寫檢查多行字串
