Sobes.tech
Junior

Šta znači ako se za promenljivu postavi setter?

sobes.tech АИ

Одговор од АИ

Setter (seter) je metoda koja omogućava kontrolu zapisa nove vrednosti u promenljivu. Prilikom definisanja setera, standardni mehanizam dodeljivanja vrednosti po defaultu zamenjuje se kodom unutar setera. Ovo omogućava:

  • Validaciju ulaznih podataka: Proveru da li nova vrednost odgovara zadatim uslovima pre nego što je dodelite promenljivoj.
    var age: Int = 0 {
        didSet { // DidSet (nakon promene) se poziva nakon dodele
            if age < 0 {
                age = 0 // Ne dozvoljavamo dodelu negativne vrednosti
            }
        }
    }
    
  • Izvršavanje dodatnih radnji: Pokretanje drugog koda pri promeni vrednosti promenljive, na primer, ažuriranje korisničkog interfejsa ili obaveštavanje drugih delova aplikacije.
    var score: Int = 0 {
        didSet { // DidSet (nakon promene)
            print("Ažuriran rezultat: \(score)") // Logovanje promene
            updateUI() // Ažuriranje UI
        }
    }
    
    func updateUI() {
        // Kod za ažuriranje interfejsa
    }
    
  • Izračunavanje vrednosti drugih svojstava: Promena jednog svojstva može uticati na vrednost drugog.
    var radius: Double = 0.0 {
        didSet { // DidSet
            area = Double.pi * radius * radius // Re-izračunavanje površine pri promeni poluprečnika
        }
    }
    
    var area: Double = 0.0 // Svojstvo koje zavisi od radius
    

Setter-i u Swift-u mogu se koristiti za sačuvana (stored) i računata (computed) svojstva. Za sačuvana svojstva često se koriste posmatrači svojstava (willSet i didSet), koji se pozivaju pre i posle dodele nove vrednosti. Za računata svojstva, setter (set) definiše kako treba dodeliti vrednost.

var myProperty: String {
    // Getter
    get {
        return "Vrednost je: \(internalValue)"
    }
    // Setter
    set(newValue) {
        internalValue = newValue + " obrađeno" // Modifikacija dodeljene vrednosti
    }
}

private var internalValue: String = "" // Interno sačuvano svojstvo