Pytania otagowane jako closures

Zamknięcie jest funkcją pierwszej klasy, która odwołuje się do (zamyka) zmienne z zakresu, w którym zostało zdefiniowane. Jeśli zamknięcie nadal istnieje po zakończeniu jego definiującego zakresu, zmienne, które zamyka, również będą istnieć.

9
Przechwycona zmienna w pętli w C #
Spotkałem interesujący problem dotyczący C #. Mam kod jak poniżej. 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()); } Oczekuję, że wyniesie 0, 2, 4, 6, 8. Jednak faktycznie …



8
var self = to?
Użycie metod instancji jako wywołań zwrotnych dla procedur obsługi zdarzeń zmienia zakres thisz „Moje wystąpienie” na „Cokolwiek, co właśnie wywołało wywołanie zwrotne” . Mój kod wygląda tak function MyObject() { this.doSomething = function() { ... } var self = this $('#foobar').bind('click', function(){ self.doSomethng() // this.doSomething() would not work here }) …

5
Swift opcjonalny uciekający parametr zamknięcia
Dany: 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() Czy istnieje sposób, aby completionparametr (i action) był typem, Action?a …

11
Jak mam wywołać 3 funkcje, aby wykonać je jedna po drugiej?
Jeśli potrzebuję wywołać te funkcje jedna po drugiej, $('#art1').animate({'width':'1000px'},1000); $('#art2').animate({'width':'1000px'},1000); $('#art3').animate({'width':'1000px'},1000); Wiem, że w jQuery mógłbym zrobić coś takiego: $('#art1').animate({'width':'1000px'},1000,'linear',function(){ $('#art2').animate({'width':'1000px'},1000,'linear',function(){ $('#art3').animate({'width':'1000px'},1000); }); }); Ale załóżmy, że nie używam jQuery i chcę wywołać: some_3secs_function(some_value); some_5secs_function(some_value); some_8secs_function(some_value); Jak powinienem wywołać te funkcje, aby wykonać some_3secs_function, a PO zakończeniu tego wywołania, wykonać …

9
Jak działają domknięcia leksykalne?
Podczas badania problemu, który miałem z zamknięciami leksykalnymi w kodzie JavaScript, napotkałem ten problem w Pythonie: flist = [] for i in xrange(3): def func(x): return x * i flist.append(func) for f in flist: print f(2) Zauważ, że ten przykład świadomie unika lambda. Drukuje "4 4 4", co jest zaskakujące. …

6
Jak używać Swift @autoclosure
Pisząc assertw Swift zauważyłem, że pierwsza wartość jest wpisana jako @autoclosure() -> Bool z przeciążoną metodą w celu zwrócenia Twartości ogólnej , aby przetestować istnienie za pośrednictwem LogicValue protocol. Jednak trzymając się ściśle pytania. Wygląda na to, @autoclosureże chce otrzymać, który zwraca a Bool. Pisanie rzeczywistego zamknięcia, które nie przyjmuje …
148 closures  swift 

7
Przechowuj zamknięcie jako zmienną w Swift
W Objective-C możesz zdefiniować wejście i wyjście bloku, zapisać jeden z tych bloków, który jest przekazany do metody, a następnie użyć tego bloku później: // in .h typedef void (^APLCalibrationProgressHandler)(float percentComplete); typedef void (^APLCalibrationCompletionHandler)(NSInteger measuredPower, NSError *error); // in .m @property (strong) APLCalibrationProgressHandler progressHandler; @property (strong) APLCalibrationCompletionHandler completionHandler; - (id)initWithRegion:(CLBeaconRegion …

2
Zamknięcie parametru bez ucieczki może pozwolić mu na ucieczkę
Mam protokół: enum DataFetchResult { case success(data: Data) case failure } protocol DataServiceType { func fetchData(location: String, completion: (DataFetchResult) -> (Void)) func cachedData(location: String) -> Data? } Z przykładową realizacją: /// An implementation of DataServiceType protocol returning predefined results using arbitrary queue for asynchronyous mechanisms. /// Dedicated to be used …

2
Czy to zamknięcie okresu istnienia obiektu jest błędem kompilatora C #?
Odpowiadałem na pytanie o możliwość domknięć (uzasadnionych) wydłużania czasu życia obiektów, kiedy natknąłem się na jakiś niezwykle ciekawy gen kodu ze strony kompilatora C # (4.0, jeśli to ma znaczenie). Najkrótsza reprodukcja, jaką mogę znaleźć, jest następująca: Utwórz lambdę, która przechwytuje lokalną podczas wywoływania metody statycznej typu zawierającego. Przypisz wygenerowane …

8
Jak uruchomić asynchroniczne wywołania zwrotne w Playground
Wiele metod Cocoa i CocoaTouch ma wywołania zwrotne zakończenia zaimplementowane jako bloki w Objective-C i Closures w Swift. Jednak podczas wypróbowywania ich w Playground zakończenie nigdy nie jest wywoływane. Na przykład: // Playground - noun: a place where people can play import Cocoa import XCPlayground let url = NSURL(string: "http://stackoverflow.com") …


1
Kiedy zamknięcie implementuje Fn, FnMut i FnOnce?
Jakie są szczególne warunki dla zamknięcia do wdrożenia Fn, FnMutoraz FnOncecechy? To jest: Kiedy zamknięcie nie realizuje FnOncecechy? Kiedy zamknięcie nie realizuje FnMutcechy? Kiedy zamknięcie nie realizuje Fncechy? Na przykład mutacja stanu zamknięcia w jego treści powoduje, że kompilator nie implementuje Fngo.
114 rust  closures 

12
Wywołanie domknięcia przypisanego bezpośrednio do właściwości obiektu
Chciałbym móc wywołać zamknięcie, które przypisuję bezpośrednio do właściwości obiektu, bez ponownego przypisywania zamknięcia do zmiennej, a następnie wywoływania jej. czy to możliwe? Poniższy kod nie działa i powoduje Fatal error: Call to undefined method stdClass::callback(). $obj = new stdClass(); $obj->callback = function() { print "HelloWorld!"; }; $obj->callback();

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.