2016-07-21 6 views
1

ich die Schließung wieSwift Schließungen Variable erfasst ändern

{ [capturedVar] otherVar in 
    // Some code here 
} 

Verwendung Wenn ich versuche, capturedVar zu ändern, wird ein Fehler angezeigt wird, sagen, es ist eine Konstante ist und nicht geändert werden kann. Gibt es eine Möglichkeit, die gefangene Variable innerhalb der Schließung zu ändern (Ich brauche das Original, in das geändert werden soll, also ist das Kopieren keine Option)?

+4

Erfasse es nicht ... –

+1

@MartinR, OMG, so einfach –

Antwort

0

Ab Swift 2, erfasst Variablen sind immer Konstanten und dieses Verhalten kann nicht geändert werden.

Sie die Variable auf diese Weise innerhalb des Verschlusses ändern kann (es ist eine Art Trick):

{ [capturedConst] otherVar in 
    var capturedVar = capturedConst 
    // Some code here 
} 

Sie haben auch festgestellt, dass Sie die ursprüngliche Variable ändern möchten, auch:

In diesem Fall schlage ich vor, dass Sie die inoutparameter definition überprüfen oder schließlich die neue geänderte Variable aus Ihrer Schließung zurückgeben.