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.

9
Erfasste Variable in einer Schleife in C #
Ich habe ein interessantes Problem mit C # getroffen. Ich habe Code wie unten. List<Func<int>> actions = new List<Func<int>>(); int variable = 0; while (variable < 5) { actions.Add(() => variable * 2); ++ variable; } foreach (var act in actions) { Console.WriteLine(act.Invoke()); } Ich erwarte, dass es 0, 2, …


12
Was sind "Schließungen" in .NET?
Was ist eine Schließung ? Haben wir sie in .NET? Wenn sie in .NET vorhanden sind, können Sie bitte ein Code-Snippet (vorzugsweise in C #) bereitstellen, das dies erklärt.
195 .net  closures 

8
var self = das?
Durch die Verwendung von Instanzmethoden als Rückruf für Ereignishandler wird der Bereich thisvon "Meine Instanz" in "Wie auch immer der Rückruf genannt wird" geändert . Mein Code sieht also so aus function MyObject() { this.doSomething = function() { ... } var self = this $('#foobar').bind('click', function(){ self.doSomethng() // this.doSomething() would …

5
Schneller optionaler Escape-Schließparameter
Gegeben: typealias Action = () -> () var action: Action = { } func doStuff(stuff: String, completion: @escaping Action) { print(stuff) action = completion completion() } func doStuffAgain() { print("again") action() } doStuff(stuff: "do stuff") { print("swift 3!") } doStuffAgain() Gibt es eine Möglichkeit, den completionParameter (und action) vom Typ …

11
Wie soll ich 3 Funktionen aufrufen, um sie nacheinander auszuführen?
Wenn ich diese Funktionen nacheinander aufrufen muss, $('#art1').animate({'width':'1000px'},1000); $('#art2').animate({'width':'1000px'},1000); $('#art3').animate({'width':'1000px'},1000); Ich weiß, dass ich in jQuery so etwas tun kann: $('#art1').animate({'width':'1000px'},1000,'linear',function(){ $('#art2').animate({'width':'1000px'},1000,'linear',function(){ $('#art3').animate({'width':'1000px'},1000); }); }); Nehmen wir jedoch an, dass ich jQuery nicht verwende und Folgendes aufrufen möchte: some_3secs_function(some_value); some_5secs_function(some_value); some_8secs_function(some_value); Wie soll ich diese Funktionen aufrufen, um sie auszuführen …

9
Wie funktionieren lexikalische Verschlüsse?
Während ich ein Problem untersuchte, das ich mit lexikalischen Abschlüssen in Javascript-Code hatte, stieß ich in Python auf dieses Problem: flist = [] for i in xrange(3): def func(x): return x * i flist.append(func) for f in flist: print f(2) Beachten Sie, dass dieses Beispiel achtsam vermeidet lambda. Es druckt …

6
Verwendung von Swift @autoclosure
Beim Schreiben eines assertin Swift ist mir aufgefallen, dass der erste Wert als eingegeben wird @autoclosure() -> Bool mit einer überladenen Methode, um einen generischen TWert zurückzugeben, um die Existenz über die zu testen LogicValue protocol. Halten Sie sich jedoch strikt an die vorliegende Frage. Es scheint ein zu wollen …
148 closures  swift 

7
Speichern Sie einen Abschluss als Variable in Swift
In Objective-C können Sie die Ein- und Ausgabe eines Blocks definieren, einen der Blöcke speichern, die an eine Methode übergeben wurden, und diesen Block später verwenden: // in .h typedef void (^APLCalibrationProgressHandler)(float percentComplete); typedef void (^APLCalibrationCompletionHandler)(NSInteger measuredPower, NSError *error); // in .m @property (strong) APLCalibrationProgressHandler progressHandler; @property (strong) APLCalibrationCompletionHandler completionHandler; …

2
Die Verwendung eines nicht-Escape-Parameters kann das Schließen ermöglichen
Ich habe ein Protokoll: enum DataFetchResult { case success(data: Data) case failure } protocol DataServiceType { func fetchData(location: String, completion: (DataFetchResult) -> (Void)) func cachedData(location: String) -> Data? } Mit einer Beispielimplementierung: /// An implementation of DataServiceType protocol returning predefined results using arbitrary queue for asynchronyous mechanisms. /// Dedicated to …


8
Wie führe ich asynchrone Rückrufe in Playground aus?
Bei vielen Cocoa- und CocoaTouch-Methoden sind Abschlussrückrufe als Blöcke in Objective-C und Closures in Swift implementiert. Wenn Sie diese jedoch auf dem Spielplatz ausprobieren, wird die Fertigstellung niemals aufgerufen. Beispielsweise: // Playground - noun: a place where people can play import Cocoa import XCPlayground let url = NSURL(string: "http://stackoverflow.com") let …

10
Nichtlokales Schlüsselwort in Python 2.x.
Ich versuche, einen Abschluss in Python 2.6 zu implementieren, und ich muss auf eine nicht lokale Variable zugreifen, aber es scheint, dass dieses Schlüsselwort in Python 2.x nicht verfügbar ist. Wie sollte man in Abschlüssen in diesen Python-Versionen auf nichtlokale Variablen in Closures zugreifen?

1
Wann implementiert ein Abschluss Fn, FnMut und FnOnce?
Was sind die besonderen Bedingungen für eine Schließung der zu implementieren Fn, FnMutund FnOnceZüge? Das ist: Wann setzt eine Schließung das Merkmal nicht um FnOnce? Wann setzt eine Schließung das Merkmal nicht um FnMut? Wann setzt eine Schließung das Merkmal nicht um Fn? Wenn Sie beispielsweise den Status des Abschlusses …
114 rust  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.