*分支if*
* Swift 提供了類似 C 語言的流程控制結(jié)構(gòu)(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的類型安全機(jī)制會報錯
if intValue = 10 { } //這種可能將判斷寫錯恢总,swift有效的避免了這種情況
'' if intValue == 10 {
''? ? print(intValue)
'' }
*三目運算符*
* 三目運算符的特殊在于它是有三個操作數(shù)的運算符,它簡潔地表達(dá)根據(jù)問題成立與否做出二選一的操作
* 格式: 問題 睬愤?答案一 : 答案二
* 提示 : swift中三目運算符用得很多
* 注意 :過度使用三目運算符會使簡潔的代碼變的難懂片仿。我們應(yīng)避免在一個組合語句中使用多個三目運算符
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可以判斷區(qū)間和元祖
* 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("優(yōu)")
''? ? fallthrough
'' case "C":
''? ? print("差")
'' default:
''? ? print("沒有評級")
'' }
*匹配區(qū)間*
* 閉區(qū)間操作符 . . . 包含頭包含尾
* 半開區(qū)間操作符 . .< 包含頭不包含尾
'' 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后面的條件表達(dá)式為真才賦值并執(zhí)行case后的語句
''? ? ? ? case (0, 0):
''? ? ? ? ? print("原點")
''? ? ? ? case (50, 50):
''? ? ? ? ? print("中點")
''? ? ? ? default:
''? ? ? ? ? print("Other")
''? ? ? ? }
''? ? ? ? //: 值綁定(Value Bindings)
''? ? ? ? switch point{
''? ? ? ? ? // 只有where后面的條件表達(dá)式為真才賦值并執(zhí)行case后的語句
''? ? ? ? case var(x, y) where x > y:
''? ? ? ? ? print("\(x) > \(y)")
''? ? ? ? case var(x, y) where x < y:
''? ? ? ? ? print("\(x) < \(y)")
''? ? ? ? default:
''? ? ? ? ? print("Other")
''? ? ? ? }