Sobes.tech
Junior

Co znamená, pokud je pro proměnnou nastaven setter?

sobes.tech AI

Odpověď od AI

Setter (nastavení) je metoda, která umožňuje kontrolovat zápis nové hodnoty do proměnné. Při definování setteru je standardní mechanismus přiřazení hodnoty nahrazen kódem uvnitř setteru. To umožňuje:

  • Validovat vstupní data: Zkontrolovat, zda nová hodnota splňuje stanovené podmínky, před jejím přiřazením proměnné.
    var age: Int = 0 {
        didSet { // DidSet (po změně) je volán po přiřazení
            if age < 0 {
                age = 0 // Nedovolíme přiřadit zápornou hodnotu
            }
        }
    }
    
  • Provádět další akce: Spustit jiný kód při změně hodnoty proměnné, například aktualizovat uživatelské rozhraní nebo upozornit jiné části aplikace.
    var score: Int = 0 {
        didSet { // DidSet (po změně)
            print("Skóre aktualizováno na \(score)") // Logování změny
            updateUI() // Aktualizace UI
        }
    }
    
    func updateUI() {
        // Kód pro aktualizaci rozhraní
    }
    
  • Vypočítávat hodnoty jiných vlastností: Změna jedné vlastnosti může ovlivnit hodnotu jiné.
    var radius: Double = 0.0 {
        didSet { // DidSet
            area = Double.pi * radius * radius // Přepočítat plochu při změně poloměru
        }
    }
    
    var area: Double = 0.0 // Vlastnost závislá na radius
    

Settery ve Swiftu lze používat pro uložené (stored) i vypočítané (computed) vlastnosti. U uložených vlastností se často používají pozorovatelé vlastností (willSet a didSet), které jsou volány před a po přiřazení nové hodnoty. U vypočítaných vlastností určuje setter (set), jak má být hodnota přiřazena.

var myProperty: String {
    // Getter
    get {
        return "Hodnota je: \(internalValue)"
    }
    // Setter
    set(newValue) {
        internalValue = newValue + " zpracováno" // Modifikace přiřazené hodnoty
    }
}

private var internalValue: String = "" // Vnitřní uložená vlastnost