Sobes.tech
Junior

Agar o'zgaruvchi uchun setter o'rnatilsa, bu nima degani?

sobes.tech AI

AIdan javob

Setter (sozlovchi) yangi qiymatni o'zgaruvchiga yozishni nazorat qilish imkonini beradigan metoddir. Setterni belgilashda, standart qiymat tayyorlash mexanizmi, setter ichidagi kod bilan almashtiriladi. Bu quyidagilarni qilish imkonini beradi:

  • Kiritilgan ma'lumotlarni tekshirish: Yangi qiymat belgilangan shartlarga mos keladimi yoki yo'qmi, uni o'zgaruvchiga yozishdan oldin tekshirish.
    var age: Int = 0 {
        didSet { // DidSet (o'zgartirilgach) setter chaqiriladi
            if age < 0 {
                age = 0 // Manfiy qiymatga ruxsat bermaymiz
            }
        }
    }
    
  • Qo'shimcha harakatlarni bajarish: O'zgaruvchining qiymati o'zgarganda boshqa kodni ishga tushirish, masalan, foydalanuvchi interfeysini yangilash yoki boshqa qismlarni xabardor qilish.
    var score: Int = 0 {
        didSet { // DidSet (o'zgartirilgach)
            print("Ball yangilandi: \(score)") // O'zgarishni log qilish
            updateUI() // UI ni yangilash
        }
    }
    
    func updateUI() {
        // Interfeysni yangilash uchun kod
    }
    
  • Boshqa xususiyatlarning qiymatlarini hisoblash: Bir xususiyat o'zgarishi, boshqa bir xususiyatning qiymatiga ta'sir qilishi mumkin.
    var radius: Double = 0.0 {
        didSet { // DidSet
            area = Double.pi * radius * radius // Radius o'zgarganda maydonni qayta hisoblash
        }
    }
    
    var area: Double = 0.0 // radius ga bog'liq xususiyat
    

Swift'da setterlar, saqlangan (stored properties) va hisoblangan (computed properties) xususiyatlar uchun ishlatilishi mumkin. Saqlangan xususiyatlar uchun, odatda, xususiyat kuzatuvchilari (willSet va didSet) ishlatiladi, ular yangi qiymat tayinlanishidan oldin va keyin chaqiriladi. Hisoblangan xususiyatlar uchun, set setter qanday qiymat berilishi kerakligini belgilaydi.

var myProperty: String {
    // Getter
    get {
        return "Qiymat: \(internalValue)"
    }
    // Setter
    set(newValue) {
        internalValue = newValue + " ishlov berilgan" // Tayyorlangan qiymatni o'zgartirish
    }
}

private var internalValue: String = "" // Ichki saqlangan xususiyat