條件控制 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 {
        (條件12皆未滿足,執行的動作)
    }
    
    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 小於零
    

results matching ""

    No results matching ""