本文章純粹是中文版《The Swift Programming Language》的學習筆記,因此絕大部分的內容都是文中有的。本文是本人的學習筆記,不是正式系統的記錄。僅供參考html
如下仍是有不少沒看懂、不肯定的地方,我會以「存疑」的註解指出。編程
在此感謝中文版翻譯者,這極大地加快了 Swift 的學習速度。swift
本文地址:http://www.javashuo.com/article/p-qinmwcjc-hm.htmlsegmentfault
原版:The Swift Programming Language
中文版:Swift 3 編程語言 - 控制流app
這篇一部分其實就是各類基礎了,有 Objective-C 的基礎,這一小節絕大部分是不用看的。主要關注 switch 和 guard 就好編程語言
沒什麼好講的,忽略ide
while condition { ... } repeat { ... } while condition
if ... { ... } else if ... { ... } else { ... }
switch anInt { case 1: ... case 2, 3, 4: // 這裏與 C 是很是不同的 ... // 每一行 case 的執行語句中至少要有一句話。實在沒話說的話, // 就用一個 break 吧。在其餘狀況下,default 並非必須的 default: ... }
我的感受,若是你是 Swift 和 Objective-C 混用的話,建議仍是在每個分支處理的結尾統一加上 break 語句
。由於若是不這麼作,你一不當心就會把 Swift 的習慣帶到 Objective-C 上面去了。函數
此外,case 後面的內容能夠用前幾章提到的區間來表示。學習
Switch 可使用元組。元祖中可使用 「_
」 來表示 「*」 的含義。ui
好比官方例子:
switch somePoint { case (0, 0): print("(0, 0) is at the origin") case (_, 0): print("(\(somePoint.0), 0) is on the x-axis") case (0, _): print("(0, \(somePoint.1)) is on the y-axis") case (-2...2, -2...2): print("(\(somePoint.0), \(somePoint.1)) is inside the box") default: print("(\(somePoint.0), \(somePoint.1)) is outside of the box") }
此外,case 最後面還能夠加上花樣,就是使用 where
語句進一步限制 case 的範圍。再好比官方的例子:
switch yetAnotherPoint { case let (x, y) where x == y: print("(\(x), \(y)) is on the line x == y") case let (x, y) where x == -y: print("(\(x), \(y)) is on the line x == -y") case let (x, y): print("(\(x), \(y)) is just some arbitrary point") }
在 Objectice-C 中,咱們通常會使用 if
在函數最開始進行參數檢查。在 Swift 中,建議使用 guard
來作這樣的事情。語法以下:
guard condition else { ... }