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語句特征是一樣的。