Sobes.tech
Junior

Mit jelent, ha egy változóhoz egy setter-t állítunk be?

sobes.tech MI

Válasz az MI-től

Setter (beállító) egy olyan metódus, amely lehetővé teszi az új érték írásának ellenőrzését egy változóba. Setter definiálásakor az alapértelmezett érték hozzárendelési mechanizmust egy kód helyettesíti a setter belsejében. Ez lehetővé teszi:

  • Bemeneti adatok érvényesítése: Ellenőrizni, hogy az új érték megfelel-e a megadott feltételeknek, mielőtt hozzárendelnénk a változóhoz.
    var age: Int = 0 {
        didSet { // A didSet (módosítás után) setter hívódik meg
            if age < 0 {
                age = 0 // Negatív érték nem engedélyezett
            }
        }
    }
    
  • További műveletek végrehajtása: Más kód futtatása, amikor a változó értéke megváltozik, például felhasználói felület frissítése vagy más részek értesítése.
    var score: Int = 0 {
        didSet { // A didSet
            print("Pontszám frissítve: \(score)") // Változás naplózása
            updateUI() // UI frissítése
        }
    }
    
    func updateUI() {
        // Kód a felhasználói felület frissítéséhez
    }
    
  • Más tulajdonságértékek kiszámítása: Egy tulajdonság változása befolyásolhat más értékét.
    var radius: Double = 0.0 {
        didSet { // A didSet
            area = Double.pi * radius * radius // A terület újraszámítása a sugár változásakor
        }
    }
    
    var area: Double = 0.0 // Sugártól függő tulajdonság
    

A setter-ek Swiftben használhatók tárolt (stored) és számított (computed) tulajdonságokra. Tárolt tulajdonságok esetén gyakran használunk tulajdonságfigyelőket (willSet és didSet), amelyek a hozzárendelés előtt és után hívódnak meg. Számított tulajdonságok esetén a set határozza meg, hogyan kell értéket hozzárendelni.

var myProperty: String {
    // Getter
    get {
        return "Az érték: \(internalValue)"
    }
    // Setter
    set(newValue) {
        internalValue = newValue + " feldolgozva" // A hozzárendelt érték módosítása
    }
}

private var internalValue: String = "" // Belső tárolt tulajdonság