標籤:
switch的簡單使用:
相比 C 和 objective - C 中的 switch 語句,Swift 中的 switch 語句不會預設的掉落到每個 case 的下面進入 另一個 case.相反,第一個匹配的 switch 語句當第一個匹配的 case 一完成, 就完成了它整個的執行。而不需 要一個明確的 break 語句。這使得 switch 語句比在 C 語言中使用更安全、更簡單,並避免錯誤地執行多個 case。
從例子學習:
let anotherCharacter :Character = "a"switch anotherCharacter {case "a": println("a")case "A": println("The letter is A") default: println("NOT letter")}
通過swift中的playground中可以看到上述代碼會輸出:"a"
解釋一下為什麼書"a"字元:在程式中定義一個anotherCharacter常量字元,通過Switch語句中的case進行判斷,當與第一個case相遇時發現就是我們想要找得,然後就會執行case中相應的代碼塊輸出"a"字元。
注意:每個case語句至少包含一個可執行語句,否則程式無效
case可以與多個對象進行匹配,之間用逗號隔開:
switch anotherCharacter {case "b","c","d": println("輸出bcd")case "a","e","f": println("輸出aef")default: println("未找到")}//程式會輸出:輸出aef
因為在執行程式時,與第一個case中的三個對象進行比較判斷,發現沒有我們想要的,於是緊接著執行第二個case並與其中的多個對象進行比較判斷。
Switch中的元組使用:
寫一個簡單的例子:使用一個點座標(x,y),表示為一個簡單的元組型(Int,Int),並在樣本後面的圖中將其分類
let OriginPoint = (1, 1)switch OriginPoint{case (0,0): println("(0,0) is at the origin")case (_,0): println("(\(OriginPoint.0), 0) is on the x-axis")case (0,_): println("(0, \(OriginPoint.1)) is on the y-axis")case (-2...2,-2...2): println("(\(OriginPoint.0), \(OriginPoint.1)) is inside the box")default: println("(\(OriginPoint.0), \(OriginPoint.1)) is outside of the box") }//輸出:"(1, 1) is inside the box"
相應的說明:(_,0)和(0,_)中"_"符號在Swift中代表忽略值得意思;(-2...2,-2...2)中的代表x取值在[-2,2]的區間,y取值在[-2,2]的區間。
Swift中Switch的學習