Swift—分支

*分支if*

* Swift 提供了類似 C 語言的流程控制結構(if/switch/for/while/dowhile)

* 只能以Bool作為條件語句

* 條件語句不需要加()

* {}不能省略

* swift中if分支的模式可以使用where語句來判斷額外的條件

* 其它跟OC中if一樣

let intValue = 10

'' if intValue > 2{

''? ? print("yes")

'' }

'' //用where額外判斷

'' let testValue: Int? = 10

'' if let d = testValue where testValue > 9{

''? ? print"滿足了"

'' }

*Bool類型*

* c語言和OC語言沒有真正的BOOL類型

* OC語言的Bool類型YES/NO是`typedef signed char BOOL;`非0即真

* swift引入了真正的BOOL類型true / false

* swift中邏輯只有兩個 true / false

* 如果你在需要使用BOOL類型的地方使用了非布爾值,swift的類型安全機制會報錯

if intValue = 10 { } //這種可能將判斷寫錯,swift有效的避免了這種情況

'' if intValue == 10 {

''? ? print(intValue)

'' }

*三目運算符*

* 三目運算符的特殊在于它是有三個操作數的運算符,它簡潔地表達根據問題成立與否做出二選一的操作

* 格式: 問題 ?答案一 : 答案二

* 提示 : swift中三目運算符用得很多

* 注意 :過度使用三目運算符會使簡潔的代碼變的難懂。我們應避免在一個組合語句中使用多個三目運算符

let result = intValue > 20 ? 20 : 19

*分支switch*

* OC中case后面必須加上break否則會貫穿,swift不用

* swift中如果想使用貫穿必須使用 fallthrough

* OC中可以不寫default,swift中只有滿足所有條件才能忽略default

* OC中default可以隨便放,swift不可以

* OC中case中定義變量需要加大括號,否則作用域混亂,swift不用加大括號

* swift的switch可以判斷區間和元祖

* swift中case分支的模式可以使用where語句來判斷額外的條件

注意:swift中每個case分支都必須包含至少一條語句, 不像 C 語言里的switch語句,在 Swift 中,switch語句不會同時匹配多個條件

'' //OC中寫法

'' switch(rank){

'' case "A":

'' case "B":

''? ? NSLog(@"還不錯")

''? ? break

'' case "C":

''? ? NSLog("差")

''? ? break

'' }

'' //swift 寫法 default不能隨便放,只能放在最后

'' var rank = "A"

'' switch rank{

'' //??? default:

'' //? ? print("沒有評級")

'' case "A", "B":

''? ? var num = 10

''? ? print("優")

''? ? fallthrough

'' case "C":

''? ? print("差")

'' default:

''? ? print("沒有評級")

'' }

*匹配區間*

* 閉區間操作符 . . . 包含頭包含尾

* 半開區間操作符 . .< 包含頭不包含尾

'' var age1 = 10

''? ? ? ? switch age1 {

''? ? ? ? case 0:

''? ? ? ? ? print("0")

''? ? ? ? case 1..<18:

''? ? ? ? ? print("未成年")

''? ? ? ? case 18..<30:

''? ? ? ? ? print("成年")

''? ? ? ? default:

''? ? ? ? ? print("老年人")

''? ? ? ? }

''? ? ? ? //: 匹配元祖

''? ? ? ? var point = (50, 50)

''? ? ? ? switch point{

''? ? ? ? ? // 只有where后面的條件表達式為真才賦值并執行case后的語句

''? ? ? ? case (0, 0):

''? ? ? ? ? print("原點")

''? ? ? ? case (50, 50):

''? ? ? ? ? print("中點")

''? ? ? ? default:

''? ? ? ? ? print("Other")

''? ? ? ? }

''? ? ? ? //: 值綁定(Value Bindings)

''? ? ? ? switch point{

''? ? ? ? ? // 只有where后面的條件表達式為真才賦值并執行case后的語句

''? ? ? ? case var(x, y) where x > y:

''? ? ? ? ? print("\(x) > \(y)")

''? ? ? ? case var(x, y) where x < y:

''? ? ? ? ? print("\(x) < \(y)")

''? ? ? ? default:

''? ? ? ? ? print("Other")

''? ? ? ? }

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容