Mutating self (struct / enum) innerhalb von Escaping Closure in Swift 3.0

In Swift 2.2 konnten wir eine Struktur oder eine Enumeration innerhalb eines Closures mutieren, wenn es sich innerhalb einer mutierenden Funktion befand. Aber in Swift 3.0 ist das nicht mehr möglich. Ich erhalte den folgenden Fehler

closure kann einen mutierenden Selbstparameter nicht implizit erfassen

Hier ist ein Code-Snippet,

struct Point {
    var x = 0.0, y = 0.0

    mutating func moveBy(x deltaX: Double, y deltaY: Double) {
        x += deltaX
        y += deltaY

        test { (a) -> Void in
            // Get the Error in the below line.
            self.x = Double(a)
        }

    }

    mutating func test(myClosure: @escaping (_ a: Double) -> Void) {
        myClosure(3)
    }
}

Ich verstehe, dass Werttypen nicht änderbar sein sollen. Ich habe Fälle, in denen ich eine Variable in der Struktur innerhalb einer der Funktionen ändern muss, wenn ich die API-Antwort erhalte. (Im Abschlussabschluss)

Ist das, was ich in Swift 2.2 gemacht habe, unmöglich oder gibt es eine Möglichkeit, dies zu erreichen?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage