Die Beschreibung der Verschlüsse swift office documentWie funktioniert Verschluss speichern Verweise auf Konstanten oder Werte
kommterfassen kann und Speicher verweist auf beliebige Konstanten und Variablen aus dem Kontext, in dem sie definiert sind. Dies wird als Schließen dieser Konstanten und Variablen bezeichnet.
Ich verstehe nicht vollständig speichern Referenzen Teil. Bedeutet es, dass es eine Art "Zeiger" auf eine Variable erzeugt? Wenn der Wert geändert wurde, hat sich der "de-referenzierte Zeiger" ebenfalls auf den neuen Wert geändert. Ich denke Swift hat kein Zeigerkonzept. Ich habe es ausgeliehen, um mein Verständnis auszudrücken.
Wäre sehr schön, dass jemand eine einfache Codezeilen zur Verfügung stellen kann, um zu erklären, wie die Schließung Referenz auf die Konstanten/Variablen speichert.
Wenn Sie diesen Abschnitt im Swift-Sprachführer weiterlesen, sehen Sie, dass sie ein Beispiel einer 'makeIncrementer'-Funktion zeigen und erklären, die zeigt, wie Verschlüsse Werte als Referenzen erfassen. Die 'runningTotal' -Variable wird als Referenz erfasst, so dass mehrere Aufrufe der zurückgegebenen Funktion (die das' runningTotal' erfasst) inkrementiert werden, da sie einen Verweis auf diese Variable enthält - obwohl es ein Werttyp ist. – Hamish
Beachten Sie, dass selbst wenn Swift als Sprache keine Zeiger enthielt (JavaScript hat beispielsweise Closures, aber keine Raw-Memory-Pointer), dies keinen Einfluss auf die Assembly hat, die der Swift-Compiler ausgibt. Es wird viele indirekte Verweise ("Zeiger") im Assemblercode geben. Viele Dinge, die in "Swift" illegal sind, sind in der swiftc-Ausgabe völlig legal (ungebundene gotos zum Beispiel sind in der Compiler-Ausgabe üblich, aber existieren in der Sprache nicht). –