條件控制 Selection Statement
標籤
if
基本架構
if (條件) { (條件滿足,執行的動作) }
let number = 10 if number > 0 { number -= 5 } print("\(number)")
輸出結果
5
else
if (條件) { (條件滿足,執行的動作) } else { (條件未滿足,執行的動作) }
let number = -10 if number > 0 { print("\(number)") } else { print("\(abs(number))") }
輸出結果
10
- 附註:abs() 為絕對值。
else if 多組條件
if (條件1) { (條件1滿足,執行的動作) } else if (條件2) { (條件1未滿足,條件2滿足,執行的動作) } else { (條件1、2皆未滿足,執行的動作) }
for i in 1...100 { if i <= 5 { print("\(i) ", terminator: "") } else if i % 20 == 0 { print("\(i)") } else if i > 95 { print("\(i) ", terminator: "") } }
輸出結果
1 2 3 4 5 20 40 60 80 96 97 98 99 100
ternary operator 三元運算子
data = (條件) ? (條件滿足,執行的動作) : (條件未滿足,執行的動作)
// if else let data = false var number: Int if data == true { number = 10 } else { number = 20 } print(number) // 三元運算子 number = data == true ? 10 : 20 print(number)
輸出結果
20 20
switch
基本架構
swift (條件式) { case (條件1): (條件1滿足,執行的動作) case (條件2): (條件2滿足,執行的動作) ... default: (條件皆未滿足,執行的動作) }
let number = 1 switch number { case 1: print("learning swift is funny.") case 2: print("learning swift is bored.") default: print("") }
輸出結果
learning swift is funny.
interval 區間值
let number = 61 switch number { case 0...59: print("fail") case 60...100: print("pass") default: print("") }
輸出結果
pass
where 限定條件
let number = 61 switch number { case 0...100 where number < 60: print("fail") case 0...100 where number >= 60: print("pass") default: print("") }
輸出結果
pass
tuple 元組
let point = (0, 3) switch point { case (0, 0): print("原點") case (_, 0): print("X 軸") case (0, _): print("Y 軸") case (0...5, 0...5): print("範圍內") default: print("") }
輸出結果
Y 軸
continue
基本架構
if (條件) { continue // 繼續動作 }
// 1 加到20,跳過10 var number: Int = 0 for i in 1...20 { if i != 10 { number += i // 0 + 1 + ... + 20 } else { i = 10 continue // 繼續動作 } } print("\(number)") // 0 + 1 + ... + 9 + 11 + ... + 20
輸出結果
200
break
基本架構
if (條件) { break // 停止動作 }
// 1 加到20,停在10 var number: Int = 0 for i in 1...20 { if i != 10 { number += i // 0 + 1 + ... + 20 } else { i = 10 break // 停止動作 } } print("\(number)") // 0 + 1 + ... + 9
輸出結果
45
fallthought
基本架構
switch 條件式 { case (條件滿足): (執行動作) fallthrough case (忽略條件): (強制執行動作) default: (上述已執行動作,無動作) }
let data = 1 switch data { case 1: print("data = 1") fallthrough case 2: print("data = 2") fallthrough case 3: print("data = 3") case 4: print("data = 4") default: print("") }
輸出結果
data = 1 data = 2 data = 3
值綁定 value binding
if let
if let data = Int("10") { print("\(data + 5)") } else { print("error") } if let data = Int("data") { print("\(data + 5)") } else { print("error") }
輸出結果
15 error
switch let
let point = (0, 5) switch point { case (let x, 0): print("X 軸, \((x, 0))") case (0, let y): print("Y 軸, \((0, y))") case let (x, y): print("範圍外") }
輸出結果
Y 軸, (0, 5)
斷言 assertion
assert((條件), (條件未滿足,輸出至主控台訊息))
let data = -5
assert(data > 0, "data 小於零")
輸出結果
assertion failed: data 小於零