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:

Swift
Property'larga murojaat
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)

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

Quyidagicha ularga murojaat qildik:

  • person1.name β€” name propertyni olish
  • person1.age β€” age 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 num1 β€” stored 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:

Swift
Computed Property
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)

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:

Swift
Getter va Setter
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)

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

Swift
Static Property
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)

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.


Birinchi masalaning yechimi

Keling, birinchi masala "Stored property" ni birga yechib ko'ramiz:

1-qadam: Masalani tushunish

Circle classini yarating:

  • radius stored property
  • Initializer orqali qiymat bering
  • getRadius() methodi radius qaytarsin

2-qadam: Yechim algoritmi

  1. Initializer yozamiz - radius ga qiymat beramiz
  2. getRadius() methodini yozamiz

3-qadam: Kodni yozamiz

Swift
Circle class yechimi
class Circle { var radius: Double init(radius: Double) { self.radius = radius } func getRadius() -> Double { return radius } } // Test let circle1 = Circle(radius: 5.0) print("Radius:", circle1.getRadius()) let circle2 = Circle(radius: 10.5) print("Radius:", circle2.getRadius())

Natija: Circle classini yaratdik va stored property'ni to'g'ri ishlatdik!

Buy mea coffee