Als «closures» getaggte Fragen

Ein Abschluss ist eine erstklassige Funktion, die auf Variablen aus dem Bereich verweist, in dem sie definiert wurden. Wenn der Abschluss nach dem Ende seines definierenden Bereichs noch vorhanden ist, bleiben auch die Variablen, über die er geschlossen wird, bestehen.

7
Die foreach-Kennung und die Verschlüsse
Ist in den beiden folgenden Ausschnitten der erste sicher oder müssen Sie den zweiten ausführen? Mit sicher meine ich, ist garantiert, dass jeder Thread die Methode auf dem Foo aus derselben Schleifeniteration aufruft, in der der Thread erstellt wurde? Oder müssen Sie den Verweis auf eine neue Variable "local" in …


6
Wie schreibe ich in Python 2 in eine Variable im übergeordneten Bereich?
Ich habe den folgenden Code in einer Funktion: stored_blocks = {} def replace_blocks(m): block = m.group(0) block_hash = sha1(block) stored_blocks[block_hash] = block return '{{{%s}}}' % block_hash num_converted = 0 def convert_variables(m): name = m.group(1) num_converted += 1 return '<%%= %s %%>' % name fixed = MATCH_DECLARE_NEW.sub('', template) fixed = MATCH_PYTHON_BLOCK.sub(replace_blocks, …

3
@ noescape-Attribut in Swift 1.2
In Swift 1.2 gibt es ein neues Attribut mit Schließparametern in Funktionen, und wie in der Dokumentation angegeben: Dies zeigt an, dass der Parameter immer nur aufgerufen wird (oder in einem Aufruf als @ noescape-Parameter übergeben wird), was bedeutet, dass er die Lebensdauer des Aufrufs nicht überleben kann. Nach meinem …

2
Aktualisieren von Schließungen auf Swift 3 - @escaping
Ich habe meinen Code auf Xcode 8.0 Beta 6 aktualisiert, bin aber bei der neuen Standardeinstellung für nicht entkommene Schließungen hängen geblieben. Im folgenden Code schlägt Xcode vor, hinzuzufügen@escaping vor completion:in der ersten Zeile der folgenden Code, aber das wird noch nicht kompiliert und geht im Kreis. * * ( …




2
Die Bindung von Python Lambda an lokale Werte
Der folgende Code spuckt 1zweimal aus, aber ich erwarte zu sehen 0und dann 1. def pv(v) : print v x = [] for v in range(2): x.append(lambda : pv(v)) for xx in x: xx() Ich hatte erwartet, dass Python-Lambdas hinter den Kulissen an die Referenz binden, auf die eine lokale …

4
PHP 5.4 - 'Schließung $ dieser Unterstützung'
Ich sehe, dass die neuen geplanten Funktionen für PHP 5.4 sind: Eigenschaften, Array-Dereferenzierung, eine JsonSerializable-Schnittstelle und etwas, das als ' closure $this support' bezeichnet wird. http://en.wikipedia.org/wiki/Php#Release_history Während die anderen entweder sofort klar sind (JsonSerialiable, Array-Dereferenzierung) oder ich die Einzelheiten (Merkmale) nachgeschlagen habe, bin ich mir nicht sicher, was "Abschluss $ …
68 php  closures 

3
Lambda-Verschluss-l-Werte können als r-Wert-Referenzparameter übergeben werden
Ich fand heraus, dass lvalueLambda-Verschlüsse immer als rvalueFunktionsparameter übergeben werden können. Siehe die folgende einfache Demonstration. #include <iostream> #include <functional> using namespace std; void foo(std::function<void()>&& t) { } int main() { // Case 1: passing a `lvalue` closure auto fn1 = []{}; foo(fn1); // works // Case 2: passing a …

2
Warum ist `std :: mem :: drop` nicht genau dasselbe wie der Abschluss | _ | () in höherrangigen Merkmalsgrenzen?
Die Implementierung von std::mem::dropist wie folgt dokumentiert: pub fn drop<T>(_x: T) { } Als solches würde ich erwarten, dass der Verschluss |_| ()(umgangssprachlich als Toilettenverschluss bezeichnet ) ein potenzieller 1: 1-Ersatz für dropbeide Richtungen ist. Der folgende Code zeigt jedoch, dass er dropnicht mit einem höherrangigen Merkmal kompatibel ist , …

1
Was ist ein besserer Weg, um mit Schließungen in WebAssembly mit Rust umzugehen, anstatt zu vergessen und Speicher zu verlieren?
Wie kann man beim Bereitstellen von Rückrufen für JavaScript mithilfe von Closures besser damit umgehen, dass sie nicht freigegeben werden? Der wasm-bindgen-Leitfaden schlägt die Verwendung vor .forget, gibt jedoch zu, dass dies im Wesentlichen zu einem Speicherverlust führt. Normalerweise speichern wir das Handle, damit es später zu einem geeigneten Zeitpunkt …

2
Java 8 Lambda Mutable Variable Capture aus Methodenparameter?
Ich verwende AdoptOpenJDK jdk81212-b04unter Ubuntu Linux unter Eclipse 4.13. Ich habe eine Methode in Swing, die ein Lambda in einem Lambda erzeugt. beide werden wahrscheinlich auf separaten Threads aufgerufen. Es sieht so aus (Pseudocode): private SwingAction createAction(final Data payload) { System.out.println(System.identityHashCode(payload)); return new SwingAction(() -> { System.out.println(System.identityHashCode(payload)); //do stuff //show …
8 java  lambda  closures 
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.