Pytania oznaczone «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ć.

562
Zamknięcia JavaScript a funkcje anonimowe

Mój przyjaciel i ja obecnie dyskutujemy, co jest zamknięciem w JS, a co nie. Chcemy tylko upewnić się, że naprawdę to rozumiemy. Weźmy ten przykład. Mamy pętlę zliczania i chcemy wydrukować zmienną licznika na konsoli z opóźnieniem. Dlatego używamy setTimeouti zamykania do przechwytywania wartości...

316
Dostęp do zmodyfikowanego zamknięcia

string [] files = new string[2]; files[0] = "ThinkFarAhead.Example.Settings.Configuration_Local.xml"; files[1] = "ThinkFarAhead.Example.Settings.Configuration_Global.xml"; //Resharper complains this is an "access to modified closure" for (int i = 0; i < files.Length; i++ ) { // Resharper...

249
Co wychwytują zamknięcia funkcji (lambda)?

Ostatnio zacząłem grać z Pythonem i natrafiłem na coś dziwnego w sposobie działania zamknięć. Rozważ następujący kod: adders=[0,1,2,3] for i in [0,1,2,3]: adders[i]=lambda a: i+a print adders[1](3) Buduje prostą tablicę funkcji, które pobierają pojedyncze dane wejściowe i zwracają dane dodane...

216
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) {

197
Anonimowe rekurencyjne funkcje PHP

Czy można mieć funkcję PHP zarówno rekurencyjną, jak i anonimową? To jest moja próba uruchomienia go, ale nie przechodzi w nazwie funkcji. $factorial = function( $n ) use ( $factorial ) { if( $n <= 1 ) return 1; return $factorial( $n - 1 ) * $n; }; print $factorial( 5 ); Wiem też, że to zły...

182
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...