Schnell: So ändern Sie den Wert einer Eigenschaft, ohne die didSet-Funktion aufzurufen

Wie können Sie den Wert einer Eigenschaft in Swift festlegen, ohne sie aufzurufen?didSet() Funktion außerhalb eines Initialisierungskontexts? Der folgende Code war ein fehlgeschlagenes Experiment, um dies innerhalb der Klassen zu erreichen.noside() Funktion

class Test
{
    var toggle : Bool = 0
    var hoodwink : Int = 0 {
        didSet(hoodwink)
        {
            toggle = !toggle
        }
    }

// failed attempt to set without a side effect

    func noside(newValue : Int)
    {
        hoodwink = newValue
        println("hoodwink: \(hoodwink) state: \(toggle)")
    }

    func withside(newValue : Int)
    {
        self.hoodwink = newValue
        println("hoodwink: \(hoodwink) state: \(toggle)")
    }
}

In Objective-C mit automatisch synthetisierten Eigenschaften ist das ziemlich trivial:

Mit Nebenwirkung (falls im Setter vorhanden):

self.hoodwink = newValue;

Ohne Nebenwirkung:

_hoodwink = newValue;

Antworten auf die Frage(4)

Ihre Antwort auf die Frage