0Pricing
Dart Academy · Lekcja

Funkcje wyższego rzędu i curryfikacja

Przekazywanie, zwracanie i częściowe stosowanie funkcji

Funkcje wyższego rzędu i curryfikacja to bezpłatna lekcja Dart Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Dart Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Dart Academy zawiera 4 lekcji w sumie.

Funkcje są wartościami

W Dart funkcja jest po prostu wartością, którą można przechowywać w zmiennej. Ta jedna idea otwiera cały świat wzorców funkcyjnych. 🎯

int square(int x) => x * x;
var op = square;
print(op(4)); // 16

Znaczenie funkcji wyższego rzędu

Funkcja wyższego rzędu to funkcja, która przyjmuje inną funkcję jako argument albo zwraca funkcję. Zostały już Państwu przedstawione w metodach list.

Przekazywanie funkcji

Przekazanie zachowania jako argumentu pozwala wywołującemu zdecydować, co ma się wydarzyć. W tym przypadku apply uruchamia dowolną otrzymaną funkcję.

int apply(int v, int Function(int) f) => f(v);
print(apply(5, (x) => x + 1)); // 6

Składnia typu funkcji

Typ int Function(int) oznacza funkcję przyjmującą wartość typu int i zwracającą wartość typu int. Typy jasno określają zamierzone działanie.

void run(String Function(String) format) {
  print(format('hi'));
}

Zwracanie funkcji

Funkcja wyższego rzędu może również zwracać funkcję. Zwrócona funkcja pamięta wartości z otoczenia, w którym została utworzona.

Function makeAdder(int n) {
  return (int x) => x + n;
}

Używanie zwróconej funkcji

Wystarczy raz wywołać funkcję tworzącą, aby zbudować wyspecjalizowaną funkcję, a następnie używać jej ponownie. Każdy wynik jest własnym, niewielkim skonfigurowanym narzędziem.

var add10 = makeAdder(10);
print(add10(5)); // 15
print(add10(1)); // 11

Poznajmy currying

Currying przekształca funkcję przyjmującą wiele argumentów w łańcuch funkcji jednoargumentowych. Wartości są przekazywane pojedynczo.

int Function(int) add(int a) => (int b) => a + b;
print(add(3)(4)); // 7

Częściowa aplikacja

Pierwszy argument można ustalić teraz, a pozostałe przekazać później. To właśnie częściowa aplikacja, która pozwala tworzyć wielokrotnego użytku, wstępnie skonfigurowane funkcje pomocnicze.

var add3 = add(3);
print(add3(10)); // 13
print(add3(20)); // 23

Po co stosować currying

Currying pozwala budować wyspecjalizowane funkcje na podstawie ogólnych bez przepisywania logiki. Szczególnie dobrze sprawdza się podczas tworzenia niewielkich pipeline’ów.

Typy funkcji jako parametry

Za pomocą typedef można nadawać nazwy złożonym typom funkcji, aby zachować czytelność sygnatur w całym kodzie.

typedef IntOp = int Function(int);
int apply(int v, IntOp f) => f(v);

Skrót tear-off

Zamiast opakowywać metodę w lambdę, można przekazać bezpośrednio jej nazwę. Taki tear-off sprawia, że wywołania są przejrzyste i uporządkowane.

['1', '2', '3'].map(int.parse).forEach(print);

Szybkie sprawdzenie

Sprawdźmy znajomość funkcji wyższego rzędu.

Podsumowanie

Funkcje są wartościami, więc można je przekazywać i zwracać. Currying oraz częściowa aplikacja przekształcają ogólne funkcje w wyspecjalizowane narzędzia. Dobra robota! 🚀

Często zadawane pytania

Czy lekcja „Funkcje wyższego rzędu i curryfikacja” jest bezpłatna?

Tak — pełny tekst „Funkcje wyższego rzędu i curryfikacja” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Dart Academy, przejdź na CoddyKit PRO. Kurs Dart Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Funkcje wyższego rzędu i curryfikacja”?

Przekazywanie, zwracanie i częściowe stosowanie funkcji Ćwiczysz Dart Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Dart Academy?

Nie wymagamy żadnego doświadczenia. Dart Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „Funkcje wyższego rzędu i curryfikacja”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Dart Academy?

Tak. Każda lekcja Dart Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Funkcje wyższego rzędu i curryfikacja
  2. fold, reduce i expand
  3. Leniwe obiekty iterowalne i generatory z sync*
  4. Tworzenie potoków funkcji czystych
← Powrót do Dart Academy