- 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:
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.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:
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 → 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
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
- 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.