iOS開發Swift篇—(六)流程控制
一、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("*********")
代碼示例:
三、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個俯卧撐