Sobes.tech
Junior

Ką reiškia, jei nustatomas setter kintamajam?

sobes.tech AI

Atsakymas iš AI

Setteris (setter) — tai metodas, leidžiantis kontroliuoti naujos reikšmės įrašymą į kintamąjį. Nustatant setterį, standartinis reikšmės priskyrimo mechanizmas pakeičiamas kodo, esančio setterio viduje. Tai leidžia:

  • Patikrinti įvesties duomenis: Patikrinti, ar nauja reikšmė atitinka nustatytas sąlygas, prieš ją priskiriant kintamajam.
    var age: Int = 0 {
        didSet { // Setteris (didSet) iškviečiamas po reikšmės nustatymo
            if age < 0 {
                age = 0 // Neleidžiame priskirti neigiamą reikšmę
            }
        }
    }
    
  • Vykdyti papildomas veiklas: Paleisti kitą kodą keičiant kintamojo reikšmę, pvz., atnaujinti naudotojo sąsają arba pranešti kitoms programos dalims.
    var score: Int = 0 {
        didSet { // Setteris (didSet)
            print("Score updated to \(score)") // Loguoti pakeitimą
            updateUI() // Atnaujinti UI
        }
    }
    
    func updateUI() {
        // Kodas sąsajos atnaujinimui
    }
    
  • Apskaičiuoti kitų savybių reikšmes: Vienos savybės pakeitimas gali turėti įtakos kitai.
    var radius: Double = 0.0 {
        didSet { // Setteris (didSet)
            area = Double.pi * radius * radius // Apskaičiuojame plotą keičiant spindulį
        }
    }
    
    var area: Double = 0.0 // Savybė, priklausanti nuo radius
    

Swift kalboje setteriai gali būti naudojami tiek saugomoms (stored properties), tiek skaičiuojamoms savybėms (computed properties). Saugomoms savybėms dažnai naudojami savybių stebėtojai (willSet ir didSet), kurie iškviečiami prieš ir po naujos reikšmės nustatymo. Skaičiuojamų savybių setteris (set) nustato, kaip turi būti priskirta reikšmė.

var myProperty: String {
    // Ggetteris
    get {
        return "Value is: \(internalValue)"
    }
    // Setteris
    set(newValue) {
        internalValue = newValue + " processed" // Modifikuojame priskiriamą reikšmę
    }
}

privati savybė: String = "" // Vidinė saugoma savybė