Published on

Swiftda switch operatori

Authors

Switch - operatori bir nechta alternativalar ichidan kerakli kod blokini bajarishga imkon beradi.

Swift dasturlash tilida switch operatorining sintaksisi quyidagicha:

switch (ifoda)  {
  case value1:
    // operatorlar

  case value2:
    // operatorlar

  ...
  ...

  default:
    // operatorlar
}

switch operatori qavs ichidagi ifodani baholaydi.

  • Agar ifoda natijasi value1 ga teng bo'lsa, case value1: ichidagi operatorlar bajariladi.
  • Agar natija value2 ga teng bo'lsa, case value2: ichidagi operatorlar bajariladi.
  • Agar hech bir qiymat mos kelmasa, default holatidagi operatorlar bajariladi.

Bu ishni if...else...if konstruktsiyasi bilan ham bajarish mumkin. Ammo switch operatorining sintaksisi ancha ixcham va o'qish hamda yozish osonroq.

Switch operatorining oqim diagrammasi

switch operatori bizga ko'plab alternativalar ichidan kerakli kodni bajarish imkonini beradi.

switch

Misol:

Swift
switch operatori
// hafta kunini aniqlash dasturi let dayOfWeek = 4 switch dayOfWeek { case 1: print("Sunday") case 2: print("Monday") case 3: print("Tuesday") case 4: print("Wednesday") case 5: print("Thursday") case 6: print("Friday") case 7: print("Saturday") default: print("Invalid day") }

Yuqoridagi misolda dayOfWeek o'zgaruvchisiga 4 qiymati berilgan. Endi o'zgaruvchi har bir case qiymati bilan solishtiriladi.

Qiymat case 4 bilan mos kelgani uchun print("Wednesday") operatori bajariladi va dastur yakunlanadi.

Switch operatorida fallthrough

Agar fallthrough kalit so'zidan case ichida foydalansak, moslik bo'lmasa ham boshqaruv navbatdagi case bo'limiga o'tadi.

Swift
fallthrough misoli
// hafta kunini topish dasturi let dayOfWeek = 4 switch dayOfWeek { case 1: print("Sunday") case 2: print("Monday") case 3: print("Tuesday") case 4: print("Wednesday") fallthrough case 5: print("Thursday") case 6: print("Friday") case 7: print("Saturday") default: print("Invalid day") }

Yuqoridagi misolda 4 qiymati case 4 bilan mos kelganligi uchun print("Wednesday") bajariladi.

Shuningdek, fallthrough ishlatilgani sababli keyingi case 5 ichidagi print("Thursday") ham bajariladi, garchi moslik bo'lmasa ham.

Switch operatorida Range ishlatish

Misol:

Swift
Range bilan switch
let ageGroup = 33 switch ageGroup { case 0...16: print("Child") case 17...30: print("Young Adults") case 31...45: print("Middle-aged Adults") default: print("Old-aged Adults") }

Bu misolda har bir case bitta qiymat emas, balki butun oraliqni o'z ichiga oladi: 0...16, 17...30, 31...45.

ageGroup ning qiymati 33 bo'lgani uchun u 31...45 oraliqiga tushadi va print("Middle-aged Adults") bajariladi.

Switch operatorida tuple ishlatish

Swift tilida switch operatorida tuplardan ham foydalanish mumkin.

Swift
Tuple bilan switch
let info = ("Dwight", 38) // to'liq tuple qiymatlarini taqqoslash switch info { case ("Dwight", 38): print("Dwight is 38 years old") case ("Micheal", 46): print("Micheal is 46 years old") default: print("Not known") }

Bu misolda info nomli tuple yaratilgan: "Dwight" va 38.

Har bir case ham to'liq tuple bilan berilgan: case ("Dwight", 38) va case ("Micheal", 46).

info qiymati ("Dwight", 38) bilan mos tushgani uchun print("Dwight is 38 years old") bajariladi.

Tuple haqida ko'proq bilish uchun Swiftda Tuple bo'limiga qarang.


πŸ“š Masalalarni qanday yechish kerak?

βœ… Namuna: 1-masala yechimi

Masala: Son beriladi (1-7). Hafta kuni raqamini qaytaring. Noto'g'ri son uchun 0 qaytaring.

Bosqichma-bosqich yechim:

1-qadam: Masalani tushunish

  • day = 1 β†’ 1 (Dushanba)
  • day = 7 β†’ 7 (Yakshanba)
  • day = 10 β†’ 0 (noto'g'ri)

2-qadam: switch bilan yechish

Range operatoridan foydalanib, barcha to'g'ri qiymatlarni bitta case da tekshirishimiz mumkin:

switch day {
case 1...7:
    return day
default:
    return 0
}

3-qadam: To'liq yechim

Swift
1-masala yechimi
func solve(_ day: Int) -> Int { switch day { case 1...7: return day default: return 0 } } // Tekshirish print(solve(1)) // 1 print(solve(5)) // 5 print(solve(7)) // 7 print(solve(10)) // 0 print(solve(0)) // 0

Natija: Barcha testlar o'tadi βœ…

Izoh:

  • case 1...7: β€” 1 dan 7 gacha bo'lgan barcha sonlarni ushlaydi
  • Bu range ichida bo'lsa, o'sha sonni qaytaramiz
  • default β€” 1-7 dan tashqari barcha sonlar uchun 0 qaytariladi
  • Range operatori kodni juda ixcham qiladi

Xulosa

  • switch β€” ko'p alternativalardan birini tanlash
  • case β€” har bir tanlov
  • default β€” hech bir case mos kelmasa
  • fallthrough β€” keyingi case ga o'tish
  • Range β€” 1...10 oraliqlarni tekshirish
  • Tuple β€” bir nechta qiymatni birga tekshirish
Buy mea coffee