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ć.
Zamknięte. To pytanie nie spełnia wytycznych dotyczących przepełnienia stosu . Obecnie nie przyjmuje odpowiedzi. Chcesz poprawić to pytanie? Zaktualizuj pytanie, aby było na temat przepełnienia stosu. Zamknięte 2 lata temu . Popraw to pytanie Co to jest zamknięcie? Powinien być zawarty w Javie 7. (Zamknięcia zostały omówione do włączenia do …
Dobra, wytrzymaj ze mną, wiem, że to będzie wyglądać strasznie zagmatwane, ale proszę, pomóż mi zrozumieć, co się dzieje. from functools import partial class Cage(object): def __init__(self, animal): self.animal = animal def gotimes(do_the_petting): do_the_petting() def get_petters(): for animal in ['cow', 'dog', 'cat']: cage = Cage(animal) def pet_function(): print "Mary pets …
Mam problem z uruchomieniem bloków w Swift. Oto przykład, który zadziałał (bez bloku uzupełniania): UIView.animateWithDuration(0.07) { self.someButton.alpha = 1 } lub alternatywnie bez zamknięcia końcowego: UIView.animateWithDuration(0.2, animations: { self.someButton.alpha = 1 }) ale kiedy spróbuję dodać blok uzupełniania, po prostu nie zadziała: UIView.animateWithDuration(0.2, animations: { self.blurBg.alpha = 1 }, completion: …
To jest rozszerzenie pytania z Access to Modified Closure . Chcę tylko sprawdzić, czy poniższe elementy są wystarczająco bezpieczne do użytku produkcyjnego. List<string> lists = new List<string>(); //Code to retrieve lists from DB foreach (string list in lists) { Button btn = new Button(); btn.Click += new EventHandler(delegate { MessageBox.Show(list); …
Dla Fibers mamy klasyczny przykład: generowanie liczb Fibonacciego fib = Fiber.new do x, y = 0, 1 loop do Fiber.yield y x,y = y,x+y end end Dlaczego potrzebujemy tutaj włókien? Mogę to przepisać z tym samym procesem (właściwie zamknięciem) def clsr x, y = 0, 1 Proc.new do x, y …
Studiuję THREE.js i zauważyłem wzorzec, w którym funkcje są zdefiniowane w następujący sposób: var foo = ( function () { var bar = new Bar(); return function ( ) { //actual logic using bar from above. //return result; }; }()); (Przykład patrz metoda raycast tutaj ). Normalna zmienność w taki …
Próbuję dokładniej zrozumieć „Zamknięcie” Swifta. Ale @escapingi Completion Handlersą zbyt trudne do zrozumienia Przeszukałem wiele ogłoszeń Swift i oficjalnych dokumentów, ale czułem, że to wciąż za mało. To jest przykład kodu oficjalnych dokumentów var completionHandlers: [()->Void] = [] func someFunctionWithEscapingClosure(completionHandler: @escaping ()->Void){ completionHandlers.append(completionHandler) } func someFunctionWithNoneescapingClosure(closure: ()->Void){ closure() } class …
Zasadniczo używam tej przydatnej funkcji do przetwarzania wierszy db (zwróć uwagę na PDO i / lub inne rzeczy) function fetch($query,$func) { $query = mysql_query($query); while($r = mysql_fetch_assoc($query)) { $func($r); } } Dzięki tej funkcji mogę po prostu: fetch("SELECT title FROM tbl", function($r){ //> $r['title'] contains the title }); Powiedzmy, że …
Dla następującego kodu: for sort_key, order in query_data['sort']: results.sort(key=lambda k: get_from_dot_path(k, sort_key), reverse=(order == -1)) Pylint zgłosił błąd: Zmienna komórki sort_key zdefiniowana w pętli (cell-var-from-loop) Czy ktoś mógłby podpowiedzieć, co się tutaj dzieje? Z kodu źródłowego pylint opis to: Zmienna używana w zamknięciu jest definiowana w pętli. Spowoduje to, że …
Książka mówi, że „funkcje i zamknięcia są typami referencyjnymi”. Jak więc sprawdzić, czy odniesienia są równe? == i === nie działają. func a() { } let å = a let b = å === å // Could not find an overload for === that accepts the supplied arguments
Dopiero teraz dowiaduję się o wskaźnikach funkcji i kiedy czytałem rozdział K&R na ten temat, pierwszą rzeczą, która mnie uderzyła, było: „Hej, to jest trochę jak zamknięcie”. Wiedziałem, że to założenie jest w jakiś sposób fundamentalnie błędne i po wyszukiwaniu w Internecie nie znalazłem żadnej analizy tego porównania. Dlaczego więc …
Właśnie czytałem to pytanie i chciałem wypróbować metodę aliasu zamiast metody opakowywania funkcji, ale nie mogłem sprawić, aby działała w Firefoksie 3 lub 3.5beta4 lub Google Chrome, zarówno w ich oknach debugowania, jak i na testowej stronie internetowej. Firebug: >>> window.myAlias = document.getElementById function() >>> myAlias('item1') >>> window.myAlias('item1') >>> document.getElementById('item1') …
Dużo czytałem o zamknięciach i myślę, że je rozumiem, ale bez zaciemniania obrazu sobie i innym mam nadzieję, że ktoś może wyjaśnić zamknięcia tak zwięźle i jasno, jak to tylko możliwe. Szukam prostego wyjaśnienia, które pomoże mi zrozumieć, gdzie i dlaczego chciałbym ich używać.
Nowa funkcja dostępna w JDK 8 umożliwia dodawanie do istniejącego interfejsu przy zachowaniu zgodności binarnej. Składnia jest podobna do public interface SomeInterface() { void existingInterface(); void newInterface() default SomeClass.defaultImplementation; } W ten sposób w przypadku wszystkich istniejących implementacji, SomeInterfacegdy aktualizują się do nowej wersji, nie wszystkie nagle mają błędy kompilacji …
Więc programuję w ładny, aktualny, obiektowy sposób. Regularnie korzystam z różnych aspektów OOP, które implementuje PHP, ale zastanawiam się, kiedy może być konieczne użycie domknięć. Czy są jacyś eksperci, którzy mogą rzucić trochę światła na to, kiedy warto byłoby wprowadzić zamknięcia?
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.