- Published on
Swiftda Properties
- Authors
- Name
- ShoxruxC
- @iOSdasturchi
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 qiymati0
Quyidagi mavzularni o'rganishdan oldin swiftdagi class va struct qanday ishlashini bilib olish kerak.
Misol:
Bu misolda Person nomli class yaratdik, uning ikkita propertysi bor: name va age.
Quyidagicha ularga murojaat qildik:
person1.nameβnamepropertyni olishperson1.ageβagepropertyni 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:
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:
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 β 15num2 = 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
Bu misolda:
Static property:
name- Murojaat:
University.name
- Murojaat:
Non-static property:
founded- Murojaat:
obj.founded
- Murojaat:
Static property β klassga tegishli, obyektga emas.
structichida 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
- Initializer yozamiz - radius ga qiymat beramiz
- getRadius() methodini yozamiz
3-qadam: Kodni yozamiz
Natija: Circle classini yaratdik va stored property'ni to'g'ri ishlatdik!