- Published on
Swiftda guard operatori
- Authors
- Name
- ShoxruxC
- @iOSdasturchi
Swift dasturlash tilida guard operatori ma'lum shart bajarilmasa, dastur boshqaruvini scope'dan chiqarish uchun ishlatiladi.
guard operatori if operatoriga o'xshaydi, farqi shundaki:
ifoperatori shart bajarilganda ishlaydiguardoperatori shart bajarilmasa ishlaydi
Sintaksis:
guard expression else {
// kod bloki
// boshqaruv operatori: return, break, continue yoki throw
}
expressionqiymati true bo'lsa →guardichidagi kod bajarilmaydiexpressionqiymati false bo'lsa →guardichidagi kod bajariladi
guardblokidan chiqish uchun return, break, continue yoki throw ishlatilishi majbur.
guard operatori qanday ishlaydi?

shart tekshirildi → false → guard ichidagi kod bajarildi → boshqaruv operatori bilan scope'dan chiqildi
Misol:
Swift•
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 == 0false bo'lsa →guardichidagi kod ishlaydi vacontinuebilan keyingi iteratsiyaga o'tadi- Faqat juft sonlar chop etiladi.
guard operatori funksiyada
Misol:
Swift•
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:
number23 →number % 2 == 0falseguardichidagi kod bajariladi → Odd Number chiqariladi
Endi number = 24 bo'lsa:
Swift•
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)
numberjuft bo'lgani uchunguardichidagi kod o'tkazib yuboriladi, boshqa kod bajariladi.
guard bir nechta shartlar bilan
Misol:
Swift•
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•
func checkAge(age: Int?) {
guard let myAge = age else {
print("Age is undefined")
return
}
print("My age is \(myAge)")
}
checkAge(age: 22)
ageqiymatga ega → guard-let ichidagi kod bajarilmaydi- Agar
age = nilbo'lsa → "Age is undefined" chiqariladi
guard vs if
if operatori bilan:
Swift•
func voteEligibility(age:Int) {
if age >= 18 {
print("Eligible to vote")
} else {
print("Not eligible to vote")
}
}
voteEligibility(age:42)
guard operatori bilan:
Swift•
func voteEligibility(age: Int) {
guard age >= 18 else {
print("Not Eligible to vote")
return
}
print("Eligible to vote")
}
voteEligibility(age: 42)
guardshart false bo'lsa → funksiyani darhol tark etadiifoperatorida 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 qaytaringn = -3→ manfiy → 0 qaytaringn = 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•
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 > 0false bo'lsa (ya'ni n ≤ 0) →elsebloki ishlaydi →return 0 - Agar
n > 0true 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