- 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