Swift編程中的switch...case語句實例解析。本站提示廣大學習愛好者:(Swift編程中的switch...case語句實例解析)文章只能為提供參考,不一定能成為您想要的結果。以下是Swift編程中的switch...case語句實例解析正文
Swift中的switch...case語句可以斷定對象類型, Objective-C中則必需是整數。
弗成以穿透,可以不寫break,
var rank = "A"
switch rank{
case "A": //相當於if
print("優")
case "B": // 相當於else if
print("優")
case "C": // 相當於else if
print("優")
default: // 相當於else
print("沒有評級")
}
由於不克不及穿透所以不克不及這麼寫
var rank1 = "A"
switch rank1{
case "A":
case "B":
print("優")
case "C":
print("優")
default:
print("沒有評級")
}
只能這麼寫
var rank1 = "A"
switch rank1{
case "A", "B": // 留意OC不克不及如許寫
print("優")
case "C":
print("差")
default:
print("沒有評級")
}
不克不及不寫default
var rank2 = "A"
switch rank2{
case "A":
print("優")
case "B":
print("良")
case "C":
print("差")
}
default地位只能在最初
var rank3 = "A"
switch rank3{
default:
print("沒有評級")
case "A":
print("優")
case "B":
print("良")
case "C":
print("差")
}
在case中界說變量不消加年夜括號
var rank4 = "A"
switch rank4{
case "A":
var num = 10
print("優")
case "B":
print("良")
case "C":
print("差")
default:
print("沒有評級")
}
區間和元祖婚配
var num = 10;
switch num{
case 1...9:
print("個位數")
case 10...99:
print("十位數")
default:
print("其它數")
}
var point = (10, 15)
switch point{
case (0, 0):
print("坐標在原點")
case (1...10, 10...20): // 可以在元祖中再加上區間
print("坐標的X和Y在1~10之間")
case (_, 0): // X可所以隨意率性數
print("坐標的X在X軸上")
default:
print("Other")
}
值綁定
var point = (1, 10)
switch point{
case (var x, 10): // 會將point中X的值賦值給X
print("x= \(x)")
case (var x, var y): // 會將point中XY的值賦值給XY
print("x= \(x) y= \(y)")
case var( x, y):
print("x= \(x) y= \(y)")
default:
print("Other")
}
依據前提綁定
var point = (100, 10)
switch point{
// 只要where前面的前提表達式為真才賦值並履行case後的語句
case var(x, y) where x > y:
print("x= \(x) y= \(y)")
default:
print("Other")
}
fallthrough症結字
Swift說話中的switch不會從上一個case分支落入到下一個case分支中。相反,只需第一個婚配到的case分支完成了它須要履行的語句,全部switch代碼塊完成了它的履行。比擬之下,C說話請求你顯示的拔出break語句到每一個switch分支的末尾來阻攔主動落入到下一個case分支中。Swift說話的這類防止默許落入到下一個分支中的特征意味著它的switch 功效要比C說話的加倍清楚和可猜測,可以免有意識地履行多個case分支從而激發的毛病。
假如你確切須要C作風的落入(fallthrough)的特征,你可以在每一個須要該特征的case分支中應用fallthrough症結字。上面的例子應用fallthrough來創立一個數字的描寫語句。
let integerToDescribe = 5
var description = "The number \(integerToDescribe) is"
switch integerToDescribe {
case 2, 3, 5, 7, 11, 13, 17, 19:
description += " a prime number, and also"
fallthrough
default:
description += " an integer."
}
println(description)
// prints "The number 5 is a prime number, and also an integer."
這個例子界說了一個String類型的變量description而且給它設置了一個初始值。函數應用switch邏輯來斷定integerToDescribe變量的值。當integerToDescribe的值屬於列表中的質數之一時,該函數添加一段文字在description後,來注解這個是數字是一個質數。然後它應用fallthrough症結字來"落入"到default分支中。default分支添加一段額定的文字在description的最初,至此switch代碼塊履行完了。
假如integerToDescribe的值不屬於列表中的任何質數,那末它不會婚配到第一個switch分支。而這裡沒有其他特殊的分支情形,所以integerToDescribe婚配到包括一切的default分支中。
當switch代碼塊履行完後,應用println函數打印該數字的描寫。在這個例子中,數字5被精確的辨認為了一個質數。
NOTE:fallthrough症結字不會檢討它下一個將會落入履行的case中的婚配前提。fallthrough簡略地使代碼履行持續銜接到下一個case中的履行代碼,這和C說話尺度中的switch語句特征是一樣的。