Published on

Swiftda guard operatori

Authors

Swift dasturlash tilida guard operatori ma'lum shart bajarilmasa, dastur boshqaruvini scope'dan chiqarish uchun ishlatiladi.

guard operatori if operatoriga o'xshaydi, farqi shundaki:

  • if operatori shart bajarilganda ishlaydi
  • guard operatori shart bajarilmasa ishlaydi

Sintaksis:

guard expression else {
    // kod bloki
    // boshqaruv operatori: return, break, continue yoki throw
}
  • expression qiymati true bo'lsa β†’ guard ichidagi kod bajarilmaydi
  • expression qiymati false bo'lsa β†’ guard ichidagi kod bajariladi

guard blokidan chiqish uchun return, break, continue yoki throw ishlatilishi majbur.

guard operatori qanday ishlaydi?

guard
shart tekshirildi β†’ false β†’ guard ichidagi kod bajarildi β†’ boshqaruv operatori bilan scope'dan chiqildi

Misol:

Swift
guard operatori - while loop
var i = 2 while (i <= 10) { // juft sonni tekshirish guard i % 2 == 0 else { i = i + 1 continue } print(i) i = i + 1 }

Tushuntirish:

  • i % 2 == 0 false bo'lsa β†’ guard ichidagi kod ishlaydi va continue bilan keyingi iteratsiyaga o'tadi
  • Faqat juft sonlar chop etiladi.

guard operatori funksiyada

Misol:

Swift
guard operatori - toq/juft tekshirish
func checkOddEven(number: Int) { guard number % 2 == 0 else { print("\(number) is Odd Number") return } print("\(number) is Even Number") } // Toq son checkOddEven(number: 23)

Tushuntirish:

  • number 23 β†’ number % 2 == 0 false
  • guard ichidagi kod bajariladi β†’ Odd Number chiqariladi

Endi number = 24 bo'lsa:

Swift
guard operatori - juft son
func checkOddEven(number: Int) { guard number % 2 == 0 else { print("\(number) is Odd Number") return } print("\(number) is Even Number") } // Juft son checkOddEven(number: 24)
  • number juft bo'lgani uchun guard ichidagi kod o'tkazib yuboriladi, boshqa kod bajariladi.

guard bir nechta shartlar bilan

Misol:

Swift
guard - bir nechta shartlar
func checkJobEligibility(age: Int) { guard age >= 18, age <= 40 else { print("Not Eligible for Job") return } print("You are eligible for this job") } checkJobEligibility(age: 33)
  • Shartlar vergul bilan ajratilgan
  • Barcha shartlar true bo'lsa β†’ guard o'tkazib yuboriladi

guard let - Optional Unwrapping

Misol:

Swift
guard let - optional unwrap
func checkAge(age: Int?) { guard let myAge = age else { print("Age is undefined") return } print("My age is \(myAge)") } checkAge(age: 22)
  • age qiymatga ega β†’ guard-let ichidagi kod bajarilmaydi
  • Agar age = nil bo'lsa β†’ "Age is undefined" chiqariladi

guard vs if

if operatori bilan:

Swift
if operatori
func voteEligibility(age:Int) { if age >= 18 { print("Eligible to vote") } else { print("Not eligible to vote") } } voteEligibility(age:42)

guard operatori bilan:

Swift
guard operatori
func voteEligibility(age: Int) { guard age >= 18 else { print("Not Eligible to vote") return } print("Eligible to vote") } voteEligibility(age: 42)
  • guard shart false bo'lsa β†’ funksiyani darhol tark etadi
  • if operatorida esa else qismi ishlaydi

πŸ“š Masalalarni qanday yechish kerak?

βœ… Namuna: 1-masala yechimi

Masala: Son musbat bo'lsa sonning o'zini, aks holda 0 qaytaring. guard ishlatib yechiladi.

Bosqichma-bosqich yechim:

1-qadam: Masalani tushunish

  • n = 5 β†’ musbat β†’ 5 qaytaring
  • n = -3 β†’ manfiy β†’ 0 qaytaring
  • n = 0 β†’ nol (musbat emas) β†’ 0 qaytaring

2-qadam: guard bilan yechish

guard n > 0 else {
    return 0  // musbat bo'lmasa 0
}
return n  // musbat bo'lsa n

3-qadam: To'liq yechim

Swift
1-masala yechimi
func solve(_ n: Int) -> Int { guard n > 0 else { return 0 } return n } // Tekshirish print(solve(5)) // 5 print(solve(-3)) // 0 print(solve(0)) // 0 print(solve(100)) // 100

Natija: Barcha testlar o'tadi βœ…

Izoh:

  • guard n > 0 β€” n musbat ekanligini tekshiradi
  • Agar n > 0 false bo'lsa (ya'ni n ≀ 0) β†’ else bloki ishlaydi β†’ return 0
  • Agar n > 0 true bo'lsa β†’ guard o'tkazib yuboriladi β†’ return n
  • guard "early exit" pattern uchun juda qulay

if bilan solishtirish:

if n > 0 {
    return n
} else {
    return 0
}

guard kodni ixchamroq va o'qilishi oson qiladi.


Xulosa

  • guard β€” shart false bo'lsa scope'dan chiqish
  • if dan farqi: guard false holatga fokuslanadi
  • return, break, continue, throw β€” majburiy
  • guard let β€” optional unwrapping
  • Early exit β€” guard ning asosiy maqsadi
  • Bir nechta shartlarni vergul bilan ajrating
Buy mea coffee