李洪強iOS開發Swift篇—06_流程式控制制

來源:互聯網
上載者:User

標籤:

李洪強iOS開發Swift篇—06_流程式控制制

一、swift中的流程式控制制

Swift支援的流程結構如下:

迴圈結構:for、for-in、while、do-while

選擇結構:if、switch

注意:這些語句後面一定要跟上大括弧{},在C語言中不是必須的

 

說明:跟C語言對比,用法基本一樣的有:for、while、do-while、if

  因此,只需要關注for-in和switch即可

 

二、for-in結構

簡單使用:

for-in和範圍運算子

for i in 1...3 {

    println(i)

}

// 按順序從範圍中取值賦值給i,每取1次值,就執行1次迴圈體

// 範圍的長度就是迴圈體執行的次數

  程式碼範例:

     

提示:如果不需要用到範圍中的值,可以使用底線 _ 進行忽略

for _ in 1...3 {

    println("*********")

}

程式碼範例:

  

注意:i為常量,其值是不能改變的。

 

三、switch的使用

1.使用樣本:

 1 let grade = "B" 2 switch grade { 3 case "A": 4     println("優秀等級") 5 case "B": 6     println("良好等級") 7 case "C": 8     println("中等等級") 9 default:10     println("未知等級")11 }

2.switch語句在 Swift 和 C 中的區別:

在C語言中,如果case的結尾沒有break,就會接著執行下一個case或者default語句

在Swift中,不需要在每一個case後面增加break,執行完case對應的代碼後預設會自動結束switch語句

3.switch的注意點

在Swift中,每一個case後面必須有可以執行的語句

1 let grade = "B”2 switch grade {3 case "A":4 case "B":5     println("良好等級")6 default:7     println("未知等級")8 }

說明:第二行代碼會報錯

4.case的多條件匹配

  1個case後面可以填寫多個匹配條件,條件之間用逗號,隔開

 1 let score = 95 2 switch score/10 { 3 case 10, 9: 4     println("優秀") 5 case 8, 7, 6: 6     println("及格") 7 default: 8     println("不及格") 9 }10 // 列印結果是:優秀

5.case的範圍匹配

case後面可以填寫一個範圍作為匹配條件

 1 let score = 95 2 switch score { 3 case 90...100: 4     println("優秀") 5 case 60...89: 6     println("及格") 7 default: 8     println("不及格") 9 }10 // 列印結果是:優秀

注意:

switch要保證處理所有可能的情況,不然編譯器直接報錯

因此,這裡的default一定要加,不然就出現了一些處理不到的情況

6.case匹配元組

case還可以用來匹配元組。比如判斷一個點是否在右圖的藍色矩形框內

 1 let point = (1, 1) 2 switch point { 3 case (0, 0) : 4     println("這個點在原點上") 5 case (_, 0) : 6     println("這個點在x軸上") 7 case (0, _) : 8     println("這個點在y軸上") 9 case (-2...2, -2...2) :10     println("這個點在矩形框內")11 default:12     println("這個點在其他位置")13 }

  

第5行中 _ 的作用(2種理解方式)

(1)能匹配任何值

(2)忽略對應位置元組元素

7.case的數值綁定

  在case匹配的同時,可以將switch中的值綁定給一個特定的常量或者變數,以便在case後面的語句中使用

 1 let point = (10, 0) 2 switch point { 3 case (let x, 0) : 4     println("這個點在x軸上, x值是\(x)") 5 case (0, let y) : 6     println("這個點在y軸上, y值是\(y)") 7 case let (x, y) : 8     println("這個點的x值是\(x), y值是\(y)") 9 }10 11 // 列印:這個點在x軸上, x值是10

8.where

switch語句可以使用where來增加判斷的條件。比如判斷一個點是否在右圖的綠線或者紫線上

 1 var point = (10, -10) 2 switch point { 3 case let (x, y) where x == y : 4     println("這個點在綠線上") 5 case let (x, y) where x == -y : 6     println("這個點在紫線上") 7 default : 8     println("這個點不在這2條線上") 9 }10 // 列印:這個點在紫線上

  

9.fallthrough的作用

執行完當前case後,會接著執行fallthrough後面的case或者default語句

 1 let num = 20 2 var str = "\(num)是個" 3 switch num { 4 case 0...50 : 5     str += "0~50之間的" 6       fallthrough 7 default : 8     str += "整數" 9 }10 println(str)11 // 列印:20是個0~50之間的整數

注意:fallthrough後面的case條件不能定義變數和常量

10.標籤

使用標籤的其中1個作用:可以用於明確指定要退出哪個迴圈

 1 // 做2組伏地挺身,每組3個,做完一組就休息一會 2 group : 3 for _ in 1...2 { 4     for item in 1...3 { 5         println("做1個伏地挺身") 6         if item == 2 { 7             break group 8         } 9     }10     println("休息一會")11 }

輸出結果是

做1個伏地挺身

做1個伏地挺身

程式碼範例:

  

李洪強iOS開發Swift篇—06_流程式控制制

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.