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

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

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

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

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

Last updated