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