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:

var i = 2

while (i <= 10) {
    
    // juft sonni tekshirish
    guard i % 2 == 0 else {
        i = i + 1
        continue
    }

    print(i)
    i = i + 1
}

Natija:

2
4
6
8
10

Tushuntirish:

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

Misol:

func checkOddEven() {
    var number = 23

    guard number % 2 == 0 else {
        print("Odd Number")
        return
    }

    print("Even Number")
}

checkOddEven()

Natija:

Odd Number

Tushuntirish:

  • number 23 → number % 2 == 0 false
  • guard ichidagi kod bajariladi → Odd Number chiqariladi

Endi number = 24 bo‘lsa:

func checkOddEven() {
    var number = 24

    guard number % 2 == 0 else {
        print("Odd Number")
        return
    }

    print("Even Number")
}

checkOddEven()

Natija:

Even Number
  • number juft bo‘lgani uchun guard ichidagi kod o‘tkazib yuboriladi, boshqa kod bajariladi.

Misol:

func checkJobEligibility() {
    var age = 33

    guard age >= 18, age <= 40 else {
        print("Not Eligible for Job")
        return
    }

    print("You are eligible for this job")
}

checkJobEligibility()

Natija:

You are eligible for this job
  • Shartlar vergul bilan ajratilgan
  • Barcha shartlar true bo‘lsa → guard o‘tkazib yuboriladi

Misol:

func checkAge() {
    var age: Int? = 22

    guard let myAge = age else {
        print("Age is undefined")
        return
    }

    print("My age is \(myAge)")
}

checkAge()

Natija:

My age is 22
  • age qiymatga ega → guard-let ichidagi kod bajarilmaydi
  • Agar age = nil bo‘lsa → "Age is undefined" chiqariladi

Misol:

if operatori bilan:

func voteEligibility() {
    var age = 42

    if age >= 18 {
        print("Eligible to vote")
    } else {
        print("Not eligible to vote")
    }
}

voteEligibility()

Natija:

Eligible to vote

guard operatori bilan:

func voteEligibility() {
    var age = 42

    guard age >= 18 else {
        print("Not Eligible to vote")
        return
    }

    print("Eligible to vote")
}

voteEligibility()

Natija:

Eligible to vote
  • guard shart false bo‘lsa → funksiyani darhol tark etadi
  • if operatorida esa else qismi ishlaydi