Chyba jeszcze nie żałowałem curry. Rozumiem, co to robi i jak to zrobić. Po prostu nie mogę wymyślić sytuacji, w której bym go użył.
Gdzie używasz curry w JavaScript (lub gdzie używają go główne biblioteki)? Mile widziane są przykłady manipulacji DOM lub ogólnych przykładów programowania aplikacji.
Jedna z odpowiedzi wspomina o animacji. Funkcje takie jak slideUp
, fadeIn
pobierają element jako argument i zwykle są funkcją curried zwracającą funkcję wyższego rzędu z domyślną wbudowaną funkcją animacji. Dlaczego jest to lepsze niż tylko stosowanie funkcji wyższego poziomu z niektórymi domyślnymi ustawieniami?
Czy są jakieś wady korzystania z niego?
Zgodnie z prośbą, oto kilka dobrych zasobów na temat curry JavaScript:
- http://www.dustindiaz.com/javascript-curry/
- Crockford, Douglas (2008) JavaScript: Dobre części
- http://www.svendtofte.com/code/curried_javascript/ (Objazd w ML, więc pomiń całą sekcję „Szybki kurs w ML” i zacznij od nowa od „Jak pisać curried JavaScript”)
- http://web.archive.org/web/20111217011630/http://blog.morrisjohns.com:80/javascript_closures_for_dummies
- Jak działają zamknięcia JavaScript?
- http://ejohn.org/blog/partial-functions-in-javascript (Mr. Resig o pieniądzach jak zwykle)
- http://benalman.com/news/2010/09/partial-application-in-javascript/
Dodam więcej, gdy pojawią się w komentarzach.
Tak więc, zgodnie z odpowiedziami, curry i ogólnie częściowe stosowanie są wygodnymi technikami.
Jeśli często „udoskonalasz” funkcję wysokiego poziomu, wywołując ją z tą samą konfiguracją, możesz użyć funkcji wyższego poziomu (lub użyć częściowej Resiga), aby utworzyć proste, zwięzłe metody pomocnicze.
svendtofte.com
wygląda na martwą - znaleziono go na maszynie WayBack pod adresem web.archive.org/web/20130616230053/http://www.svendtofte.com/ ... Przepraszamy, blog.morrisjohns.com/javascript_closures_for_dummies wydaje się być niedostępny też