Published on

Swiftda Properties

Authors

Swiftda class yoki struct ichida e’lon qilingan o‘zgaruvchi yoki konstantalar property (xususiyat) deyiladi. Masalan,

class Person {

  // propertylarni e'lon qilish
  var name: String = ""    // ism
  var age: Int = 0         // yosh

  ...
}

Bu yerda Person classi ichida ikki ta property bor:

  • name — String turida, boshlang‘ich qiymati ""
  • age — Int turida, boshlang‘ich qiymati 0

Quyidagi mavzularni o‘rganishdan oldin swiftdagi class va struct qanday ishlashini bilib olish kerak.

Misol:

class Person {

 // ikki ta property e'lon qilish
 var name: String = ""     // ism
 var age: Int = 0          // yosh
}

var person1 = Person()

// propertylarga qiymat berish
person1.name = "Kevin"
person1.age = 42

// propertylarni o‘qish
print("Name:", person1.name)
print("Age:", person1.age)

Natija:

Name: Kevin
Age: 42

Bu misolda Person nomli class yaratdik, uning ikkita propertysi bor: name va age.

Quyidagicha ularga murojaat qildik:

  • person1.namename propertyni olish
  • person1.ageage propertyni olish

Bunday propertylar stored properties deyiladi, chunki ular obyekt uchun haqiqiy qiymatni saqlaydi.

Computed Property

Yuqorida biz har bir obyektning qiymatini saqlaydigan stored propertylarni ko‘rdik. Masalan:

class Calculator {

  // stored property
  var num1: Int = 0   // birinchi son
  ...
}

Bu yerda num1stored property.

Ammo swiftda yana bir tur mavjud — computed property (hisoblangan property). U qiymat saqlamaydi, balki uni hisoblab qaytaradi.

Masalan:

class Calculator {
  ...

  // computed property
  var sum: Int {

    // qiymatni hisoblash
    num1 + num2
  }
}

Bu yerda sum qiymatni saqlamaydi — u faqat num1 va num2 yig‘indisini qaytaradi.

Misol:

class Calculator {

  // ikkita stored property
  var num1: Int = 0    // birinchi son
  var num2: Int = 0    // ikkinchi son

  // bitta computed property
  var sum: Int {

    // qiymatni hisoblash
    num1 + num2
  }
}

var obj = Calculator()
obj.num1 = 11
obj.num2 = 12

// computed property qiymatini o‘qish
print("Sum:", obj.sum)

Natija:

Sum: 23

Bu yerda:

  • Stored propertylar: num1, num2
  • Computed property: sum

sum doim num1 + num2 natijani hisoblab qaytaradi.

var sum: Int {

  // qiymatni hisoblash
  num1 + num2
}

Computed property qiymatini quyidagicha o‘qiymiz:

print("Sum:", obj.sum)

Getters va Setters (Computed Properties uchun)

Swiftda computed property ichida getter va setter ishlatish mumkin.

  • getter — qiymatni qaytaradi
  • setter — yangi qiymat qabul qilib, boshqa o‘zgaruvchilarni o‘zgartiradi

Misol:

class Calculator {
  var num1: Int = 0     // birinchi son
  var num2: Int = 0     // ikkinchi son

  // computed property yaratish
  var sum: Int {

    // qiymatni olish (getter)
    get {
      num1 + num2
    }
  
    // num1 va num2 ga yangi qiymatlar berish (setter)
    set(modify) {
      num1 = (modify + 10)
      num2 = (modify + 20)
    }
  }
}

var obj = Calculator()
obj.num1 = 20
obj.num2 = 50

// getterdan foydalanish
print("Get value:", obj.sum)

// setterga qiymat berish
obj.sum = 5

print("New num1 value:", obj.num1)
print("New num2 value:", obj.num2)

Natija:

Get value: 70
New num1 value: 15
New num2 value: 25

Bu yerda sum computed property bo‘lib,

Getter:

get {
  num1 + num2
}

num1 va num2 yig‘indisini qaytaradi.

Setter:

set(modify) {
  num1 = (modify + 10)
  num2 = (modify + 20)
}

modify — setterga berilgan yangi qiymat. obj.sum = 5 bajarilganda:

  • num1 = 5 + 10 → 15
  • num2 = 5 + 20 → 25

Getterga murojaat:

obj.sum

Setterga murojaat:

obj.sum = 5

Static Properties

Avvalgi misollarda biz propertylarga obyekt orqali murojaat qilgan edik.

Ammo ba’zan obyekt yaratmasdan murojaat qilinadigan property kerak bo‘ladi. Bular static property deyiladi.

Swiftda static kalit so‘zi bilan e’lon qilinadi:

class University {

  // static property 
  static var name: String = ""   // universitet nomi
  ...
}

Static propertyga murojaat qilish — klass nomi orqali:

University.name = "Kathmandu University"

Static Property — to‘liq misol

class University {

 // static property
 static var name: String = ""     // universitet nomi

 // non-static property
 var founded: Int = 0             // tashkil topgan yil
}

// University classidan obyekt yaratish
var obj = University()

// static propertyga qiymat berish
University.name = "Kathmandu University"
print(University.name)

// non-static propertyga qiymat berish
obj.founded = 1991
print(obj.founded)

Natija:

Kathmandu University
1991

Bu misolda:

  • Static property: name

    • Murojaat: University.name
  • Non-static property: founded

    • Murojaat: obj.founded

Static property — klassga tegishli, obyektga emas.

struct ichida ham static property yaratish mumkin. Ularga struct nomi orqali murojaat qilinadi.