W swift 2.2, moglibyśmy zmutować strukturę lub enum w zamknięciu, gdy był on wewnątrz funkcji mutowania. Ale w szybkim 3.0 nie jest już możliwe. I pojawia się następujący błądMutujące self (struct/enum) wewnątrz uciekającego zamknięcia w Swift 3.0
zamknięcie nie może w sposób dorozumiany zdobył mutowania parametr SELF
Oto fragment kodu,
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)
}
}
I Get That typy wartości nie mają być zmienny. Mam przypadki, w których muszę zmodyfikować jedną zmienną w strukturze w ramach jednej z funkcji, gdy otrzymam odpowiedź API. (W zamknięciu zamknięcia)
Czy to, co robiłem w szybkim 2.2, jest niemożliwe, czy jest na to sposób?
Usuń '@ escaping' ... dlaczego go masz? –
@MartinR jest ucieczką, ponieważ zamknięcie zakończenia Alamofire. – akshaynhegde
To prawdopodobnie wyjaśnia to: https://github.com/apple/swift-evolution/blob/master/proposals/0035-limit-inout-capture.md. –