Swift Academy · Lekcja

Funkcje jako wartości pierwszej klasy

Przechowywać funkcje w zmiennych, przekazywać je jako argumenty i zwracać z innych funkcji

Lekcja 4 z 412 kroki

Funkcje jako wartości pierwszej klasy to bezpłatna lekcja Swift Academy na CoddyKit. To lekcja 4 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 Swift Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Swift Academy zawiera 4 lekcji w sumie.

Wprowadzenie

W języku Swift funkcje są wartościami pierwszej klasy — można przechowywać je w zmiennych, przekazywać jako argumenty, zwracać z innych funkcji oraz zagnieżdżać w innych funkcjach.

Typy funkcji

Każda funkcja ma typ określony przez typy jej parametrów i zwracanej wartości: ```swift func add(_ a: Int, _ b: Int) -> Int { a + b } let operation: (Int, Int) -> Int = add print(operation(3, 4)) // 7 ``` Typ funkcji `add` to `(Int, Int) -> Int`.

Przekazywanie funkcji jako argumentów

```swift func apply(_ f: (Int) -> Int, to value: Int) -> Int { f(value) } func double(_ n: Int) -> Int { n * 2 } print(apply(double, to: 5)) // 10 ``` To podstawa funkcji wyższego rzędu, takich jak `map` i `filter`.

Zwracanie funkcji

```swift func multiplier(by factor: Int) -> (Int) -> Int { return { value in value * factor } } let triple = multiplier(by: 3) print(triple(7)) // 21 ``` Zwrócenie funkcji tworzy *domknięcie*, które przechwytuje `factor`.

Funkcje zagnieżdżone

Funkcje można definiować wewnątrz innych funkcji: ```swift func chooseStep(goForward: Bool) -> (Int) -> Int { func forward(_ n: Int) -> Int { n + 1 } func backward(_ n: Int) -> Int { n - 1 } return goForward ? forward : backward } let step = chooseStep(goForward: true) print(step(3)) // 4 ```

Domknięcia jako skrót

Anonimowe literały domknięć mogą zastępować dowolny typ funkcji: ```swift let square: (Int) -> Int = { $0 * $0 } print(square(6)) // 36 let doubled = [1, 2, 3].map { $0 * 2 } // [2, 4, 6] ``` `$0` oznacza pierwszy argument w skróconej postaci domknięcia.

Przechowywanie funkcji w kolekcjach

```swift let operations: [(Int, Int) -> Int] = [ { $0 + $1 }, { $0 - $1 }, { $0 * $1 } ] for op in operations { print(op(10, 3)) } // 13, 7, 30 ```

Składnia końcowego domknięcia

Gdy ostatnim argumentem jest funkcja, można zapisać ją poza nawiasami: ```swift func withLogging(_ label: String, action: () -> Void) { print("Start: \(label)") action() print("End: \(label)") } withLogging("fetch") { fetchData() } ```

Tożsamość i równość funkcji

W języku Swift nie można porównywać dwóch wartości funkcyjnych za pomocą `==` — funkcje nie są zgodne z `Equatable`: ```swift // let same = add == add ❌ ``` Jeśli trzeba je porównywać, należy opakować funkcję w strukturę lub klasę zgodną z `Equatable`.

Wzorzec curryfikacji

Zasymuluj curryfikację, zwracając funkcje z częściowo zastosowanymi argumentami: ```swift func add(_ a: Int) -> (Int) -> Int { { b in a + b } } let add5 = add(5) print(add5(3)) // 8 print(add5(10)) // 15 ``` Przydatne do tworzenia wyspecjalizowanych funkcji na podstawie funkcji ogólnych.

Szybkie sprawdzenie

Jaki jest typ funkcji, która przyjmuje dwie wartości `Int` i zwraca wartość `Int`?

Podsumowanie

Najważniejsze informacje: • Funkcje mają typy takie jak `(ParamTypes) -> ReturnType` • Można przechowywać je w zmiennych, przekazywać jako argumenty i zwracać z funkcji • Domknięcia (`{ }`) są anonimowymi wartościami funkcyjnymi • Składnia końcowego domknięcia upraszcza miejsca wywołania • Zwracanie funkcji z funkcji tworzy domknięcia przechwytujące zmienne Następnie: lekcja o łańcuchowaniu opcjonalnym i rozpakowywaniu.
Bezpłatny start

Ucz się Swift dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
122
Lekcje
409

Często zadawane pytania

Czy lekcja „Funkcje jako wartości pierwszej klasy” jest bezpłatna?

Tak — pełny tekst „Funkcje jako wartości pierwszej klasy” 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 Swift Academy, przejdź na CoddyKit PRO. Kurs Swift Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Funkcje jako wartości pierwszej klasy”?

Przechowywać funkcje w zmiennych, przekazywać je jako argumenty i zwracać z innych funkcji Ćwiczysz Swift 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ąć Swift Academy?

Nie wymagamy żadnego doświadczenia. Swift 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 4 z 4.

Ile czasu zajmuje lekcja „Funkcje jako wartości pierwszej klasy”?

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 Swift Academy?

Tak. Każda lekcja Swift 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. Etykiety argumentów i nazwy parametrów
  2. Parametry domyślne i wariadyczne
  3. Parametry inout i wiele wartości zwracanych
  4. Funkcje jako wartości pierwszej klasy
← Powrót do Swift Academy