Swift 有一個(gè)基本的布爾(Boolean)類(lèi)型,叫做Bool。布爾值指邏輯上的(logical),因?yàn)樗鼈冎荒苁钦婊蛘呒?。Swift 有兩個(gè)布爾常量,true和false:
let orangesAreOrange = true
let turnipsAreDelicious = false
orangesAreOrange和turnipsAreDelicious的類(lèi)型會(huì)被推斷為Bool,因?yàn)樗鼈兊某踔凳遣紶栕置媪?。就像之前提到?code style="box-sizing: border-box; -webkit-tap-highlight-color: transparent; -webkit-font-smoothing: antialiased; font-family: Monaco, Menlo, Consolas, 'Courier New', monospace; font-size: 13px; padding: 0px 5px; color: rgb(199, 37, 78); background-color: rgb(248, 248, 248); white-space: nowrap; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; margin: 0px 2px; border: 1px solid rgb(234, 234, 234);">Int和Double一樣,如果你創(chuàng)建變量的時(shí)候給它們賦值true或者false,那你不需要將常量或者變量聲明為Bool類(lèi)型。初始化常量或者變量的時(shí)候如果所賦的值類(lèi)型已知,就可以觸發(fā)類(lèi)型推斷,這讓 Swift 代碼更加簡(jiǎn)潔并且可讀性更高。
當(dāng)你編寫(xiě)條件語(yǔ)句比如if語(yǔ)句的時(shí)候,布爾值非常有用:
if turnipsAreDelicious {
println("Mmm, tasty turnips!")
} else {
println("Eww, turnips are horrible.")
}
// 輸出 "Eww, turnips are horrible."
條件語(yǔ)句,例如if,請(qǐng)參考控制流。
如果你在需要使用Bool類(lèi)型的地方使用了非布爾值,Swift 的類(lèi)型安全機(jī)制會(huì)報(bào)錯(cuò)。下面的例子會(huì)報(bào)告一個(gè)編譯時(shí)錯(cuò)誤:
let i = 1
if i {
// 這個(gè)例子不會(huì)通過(guò)編譯,會(huì)報(bào)錯(cuò)
}
然而,下面的例子是合法的:
let i = 1
if i == 1 {
// 這個(gè)例子會(huì)編譯成功
}
i == 1的比較結(jié)果是Bool類(lèi)型,所以第二個(gè)例子可以通過(guò)類(lèi)型檢查。類(lèi)似i == 1這樣的比較,請(qǐng)參考基本操作符。
和 Swift 中的其他類(lèi)型安全的例子一樣,這個(gè)方法可以避免錯(cuò)誤并保證這塊代碼的意圖總是清晰的。