Sobes.tech
Junior

Was bedeutet es, wenn für eine Variable ein Setter festgelegt wird?

sobes.tech KI

Antwort von AI

Ein Setter (Setzer) ist eine Methode, die es ermöglicht, die Zuweisung eines neuen Werts an eine Variable zu kontrollieren. Beim Festlegen eines Setters wird der Standardmechanismus der Wertzuweisung durch einen Code innerhalb des Setters ersetzt. Dies ermöglicht:

  • Eingabedaten validieren: Überprüfen, ob der neue Wert den festgelegten Bedingungen entspricht, bevor er der Variablen zugewiesen wird.
    var age: Int = 0 {
        didSet { // Der Setter (didSet) wird nach der Zuweisung aufgerufen
            if age < 0 {
                age = 0 // Negative Werte nicht zulassen
            }
        }
    }
    
  • Zusätzliche Aktionen ausführen: Anderen Code ausführen, wenn sich der Wert der Variablen ändert, z.B. die Benutzeroberfläche aktualisieren oder andere Teile der Anwendung benachrichtigen.
    var score: Int = 0 {
        didSet { // Der Setter (didSet)
            print("Punktzahl aktualisiert auf \(score)") // Änderung protokollieren
            updateUI() // UI aktualisieren
        }
    }
    
    func updateUI() {
        // Code zur Aktualisierung der Oberfläche
    }
    
  • Werte anderer Eigenschaften berechnen: Die Änderung einer Eigenschaft kann den Wert einer anderen beeinflussen.
    var radius: Double = 0.0 {
        didSet { // Der Setter (didSet)
            area = Double.pi * radius * radius // Fläche bei Radiusänderung neu berechnen
        }
    }
    
    var area: Double = 0.0 // Von radius abhängige Eigenschaft
    

Setter in Swift können für gespeicherte Eigenschaften und berechnete Eigenschaften verwendet werden. Für gespeicherte Eigenschaften werden häufig Eigenschaftsbeobachter (willSet und didSet) verwendet, die vor und nach der Zuweisung eines neuen Werts aufgerufen werden. Für berechnete Eigenschaften definiert der Setter (set), wie der Wert zuzuweisen ist.

var myProperty: String {
    // Getter
    get {
        return "Wert ist: \(internalValue)"
    }
    // Setter
    set(newValue) {
        internalValue = newValue + " verarbeitet" // Zugewiesenen Wert modifizieren
    }
}

private var internalValue: String = "" // Interne gespeicherte Eigenschaft