根據(jù)特定的條件執(zhí)行特定的代碼通常是十分有用的,例如:當錯誤發(fā)生時,你可能想運行額外的代碼;或者,當輸入的值太大或太小時,向用戶顯示一條消息等。要實現(xiàn)這些功能,你就需要使用條件語句。
Swift 提供兩種類型的條件語句:if語句和switch語句。通常,當條件較為簡單且可能的情況很少時,使用if語句。而switch語句更適用于條件較復雜、可能情況較多且需要用到模式匹配(pattern-matching)的情境。
if語句最簡單的形式就是只包含一個條件,當且僅當該條件為true時,才執(zhí)行相關代碼:
var temperatureInFahrenheit = 30
if temperatureInFahrenheit <= 32 {
println("It's very cold. Consider wearing a scarf.")
}
// 輸出 "It's very cold. Consider wearing a scarf."
上面的例子會判斷溫度是否小于等于 32 華氏度(水的冰點)。如果是,則打印一條消息;否則,不打印任何消息,繼續(xù)執(zhí)行if塊后面的代碼。
當然,if語句允許二選一,也就是當條件為false時,執(zhí)行 else 語句:
temperatureInFahrenheit = 40
if temperatureInFahrenheit <= 32 {
println("It's very cold. Consider wearing a scarf.")
} else {
println("It's not that cold. Wear a t-shirt.")
}
// 輸出 "It's not that cold. Wear a t-shirt."
顯然,這兩條分支中總有一條會被執(zhí)行。由于溫度已升至 40 華氏度,不算太冷,沒必要再圍圍巾——因此,else分支就被觸發(fā)了。
你可以把多個if語句鏈接在一起,像下面這樣:
temperatureInFahrenheit = 90
if temperatureInFahrenheit <= 32 {
println("It's very cold. Consider wearing a scarf.")
} else if temperatureInFahrenheit >= 86 {
println("It's really warm. Don't forget to wear sunscreen.")
} else {
println("It's not that cold. Wear a t-shirt.")
}
// 輸出 "It's really warm. Don't forget to wear sunscreen."
在上面的例子中,額外的if語句用于判斷是不是特別熱。而最后的else語句被保留了下來,用于打印既不冷也不熱時的消息。
實際上,最后的else語句是可選的:
temperatureInFahrenheit = 72
if temperatureInFahrenheit <= 32 {
println("It's very cold. Consider wearing a scarf.")
} else if temperatureInFahrenheit >= 86 {
println("It's really warm. Don't forget to wear sunscreen.")
}
在這個例子中,由于既不冷也不熱,所以不會觸發(fā)if或else if分支,也就不會打印任何消息。
switch語句會嘗試把某個值與若干個模式(pattern)進行匹配。根據(jù)第一個匹配成功的模式,switch語句會執(zhí)行對應的代碼。當有可能的情況較多時,通常用switch語句替換if語句。
switch語句最簡單的形式就是把某個值與一個或若干個相同類型的值作比較:
switch
some value to consider{
casevalue 1:
respond to value 1
casevalue 2,
value 3:
respond to value 2 or 3
default:
otherwise, do something else
}
switch語句都由多個 case 構成。為了匹配某些更特定的值,Swift 提供了幾種更復雜的匹配模式,這些模式將在本節(jié)的稍后部分提到。
每一個 case 都是代碼執(zhí)行的一條分支,這與if語句類似。與之不同的是,switch語句會決定哪一條分支應該被執(zhí)行。
switch語句必須是完備的。這就是說,每一個可能的值都必須至少有一個 case 分支與之對應。在某些不可能涵蓋所有值的情況下,你可以使用默認(default)分支滿足該要求,這個默認分支必須在switch語句的最后面。
下面的例子使用switch語句來匹配一個名為someCharacter的小寫字符:
上一篇:Swift特性下一篇:Swift閉包引起的循環(huán)強引用