Sobes.tech
Junior

Bir değişken için ayar belirlenmişse bu ne anlama gelir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Bir setter (ayarlayıcı) yeni bir değeri bir değişkene kaydetmeyi kontrol etmeye olanak tanıyan bir yöntemdir. Bir setter tanımlandığında, varsayılan değer atama mekanizması, setter içindeki kodla değiştirilir. Bu şunlara olanak tanır:

  • Giriş verilerini doğrulama: Yeni değerin belirli koşullara uyup uymadığını kontrol etmek, onu değişkene atamadan önce.
    var age: Int = 0 {
        didSet { // DidSet (değiştikten sonra) setter çağrılır
            if age < 0 {
                age = 0 // Negatif değere izin verme
            }
        }
    }
    
  • Ek işlemler gerçekleştirme: Değişkenin değeri değiştiğinde başka kodlar çalıştırmak, örneğin kullanıcı arayüzünü güncellemek veya uygulamanın diğer bölümlerine bildirim göndermek.
    var score: Int = 0 {
        didSet { // DidSet (değiştikten sonra)
            print("Skor güncellendi: \(score)") // Değişikliği kaydet
            updateUI() // UI'yi güncelle
        }
    }
    
    func updateUI() {
        // Arayüzü güncellemek için kod
    }
    
  • Diğer özelliklerin değerlerini hesaplama: Bir özelliğin değişimi, başka bir özelliğin değerini etkileyebilir.
    var radius: Double = 0.0 {
        didSet { // DidSet
            area = Double.pi * radius * radius // Yarıçap değiştiğinde alanı yeniden hesapla
        }
    }
    
    var area: Double = 0.0 // radius'a bağlı özellik
    

Swift'te setter'lar, saklanan özellikler (stored properties) ve hesaplanan özellikler (computed properties) için kullanılabilir. Saklanan özellikler için genellikle özellik gözlemcileri (willSet ve didSet) kullanılır, bunlar yeni değer atanmadan önce ve sonra çağrılır. Hesaplanan özellikler için ise, set anahtar kelimesi, değerin nasıl atanacağını belirler.

var myProperty: String {
    // Getter
    get {
        return "Değer: \(internalValue)"
    }
    // Setter
    set(newValue) {
        internalValue = newValue + " işlenmiş" // Atanan değeri değiştir
    }
}

private var internalValue: String = "" // İçsel saklanan özellik