🖥️
iOS App with Pop
UIKit Swift 5
UIKit Swift 5
  • iOS App development
  • Swift
    • Variable & Constant
    • Number & String
    • Operator
    • Array, Dictionary & Tuple
    • Enum
    • Optional
    • Function
    • Class & Struct
    • Branching
    • Loops
    • Error handler
    • Protocol
    • Extension
  • Create New Project
  • Introduction to Xcode
  • Scene-Based Life-Cycle
  • UIViewController
  • Storyboard
  • First Run
  • Display todo list
  • Basic Auto Layout
  • MVC
  • Model
  • Binding TableView
  • Binding TableViewCell
  • TableViewDelegate
  • Add navigationBar with + button
  • Add new item page
  • TextField and Switch
  • Binding action
  • Add mock item to todo list
  • What is weak?
  • Finish add item
  • Delete todo item
  • Edit todo item
  • Custom new layout
  • Adding new delegate
  • Refactor
  • Pushing edit view
  • Large navigation
  • Drag item
  • Drop item (in app)
  • Save data
  • Where to go from here?
Powered by GitBook
On this page
  1. Swift

Branching

ในบางครั้งเราต้องการรันคำสั่งแตกต่างกันไปโดยขึ้นกับเงื่อนไขบางอย่าง ใน Swift จะมีวิธีการได้สองวิธี คือ ใช้ if หรือ switch

If สามารถเขียนได้เหมือนภาษาอื่นทั่วไป

if isCar && isNew {
    print("new car")
} else if isCar {
    print("old car")
} else {
    print("not a car")
}

เราสามารถใช้ Ternary Conditional ได้แบบนี้ (เครื่องหมาย ? ต้องเว้น 1 เคาะ)

y = x > 4 ? 1 : 2

ส่วน switch สามารถเขียนได้แบบนี้

let personAge = 7
switch personAge {
   case 0..<1: print("baby")
   case 1..<3: print("toddler")
   case 3..<5: print("preschooler")
   case 5..<13: print("gradeschooler")
   case 13..<18: print("teen")
   default: print("adult")
}

โดยปกติแต่ละเคสของ switch เมื่อรันเสร็จ จะหลุดออกจาก switch เลย นั่นคือ ไม่ fallthrough ถ้าต้องการให้รันเคสลำดับถัดไปด้วย ต้องใช้ keyword fallthrough

เราสามารถใส่เงื่อนไขในแต่ละเคสเพิ่มได้

let temperature = 21.5
let humidity = 22.0

switch (temperature, humidity) {
   case let (t,h) where t > h: print("humidity lower")
   case let (t,h) where t < h: print("humidity higher")
   default: "humidity and temperature are the same"
}

สามารถใช้ tuple ได้ และสามารถนำค่าออกมาใช้ในเคสได้

let anotherPoint = (2, 0)
switch anotherPoint {
case (let x, 0):
    print("on the x-axis with an x value of \(x)")
case (0, let y):
    print("on the y-axis with a y value of \(y)")
case let (x, y):
    print("somewhere else at (\(x), \(y))")
}

ในกรณีที่เราเขียน case จนครบทุกเงื่อนไข เราไม่ต้องใส่ default

switch ยังใช้ในการถอดค่า associate value จาก Enum

enum PaymentType {
    case cheque
    case creditCard(number:String)
}

let payment = PaymentType.creditCard(number: "1234567890123456")

switch payment {
case .cheque: print("cheque")
case .creditCard(let number): print("credit card number: " + number)
}
PreviousClass & StructNextLoops

Last updated 2 years ago