Podstawy closures i przechwytywania
Poznajcie składnię closures, skrócone argumenty, trailing closure, listy przechwytywania oraz różnice między closures escaping i non-escaping.
Podstawy closures i przechwytywania to bezpłatna lekcja Swift Academy na CoddyKit. To lekcja 1 z 3. 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 3 lekcji w sumie.
Wprowadzenie
Ta lekcja wprowadza domknięcia: samodzielne bloki kodu, które można przekazywać dalej. Omawia składnię, skrócone argumenty, domknięcie końcowe, listy przechwytywania oraz domknięcia escapujące i nieescapujące.
Składnia domknięć
Domknięcia przypominają lekkie funkcje. Składnia: { (params) -> Return in ... }.
let greet = { (name: String) -> String in
return "Hello, \\(name)"
}
print(greet("Ada"))Skrócone argumenty
Swift udostępnia skrócone argumenty, takie jak $0 i $1, aby uprościć domknięcia.
let doubled = [1,2,3].map { $0 * 2 }
print(doubled)Domknięcie końcowe
Jeśli domknięcie jest ostatnim argumentem, można zapisać je poza nawiasami: jest to domknięcie końcowe.
func operate(_ x: Int, _ y: Int, _ f: (Int,Int)->Int) -> Int {
return f(x,y)
}
let sum = operate(2,3) { $0 + $1 }
print(sum)Podstawy przechwytywania
Domknięcia przechwytują wartości z otaczającego zakresu, na przykład bieżący licznik.
func makeCounter() -> () -> Int {
var count = 0
return {
count += 1
return count
}
}
let counter = makeCounter()
print(counter()) // 1
print(counter()) // 2Listy przechwytywania i escaping
Proszę używać list przechwytywania, takich jak [weak self], aby uniknąć cykli retencji. Domknięcia są domyślnie nieescapujące; proszę oznaczyć je za pomocą @escaping, jeśli są przechowywane po zakończeniu wywołania.
class Greeter {
var name = "Ada"
lazy var greet: () -> Void = { [weak self] in
print("Hello", self?.name ?? "?")
}
}
let g = Greeter()
g.greet()Pytanie o listy przechwytywania
Szybkie sprawdzenie: Jaką rolę pełni lista przechwytywania?
Podsumowanie
Podsumowanie: Domknięcia to wbudowane bloki kodu. Proszę poznać ich składnię, skrócone argumenty i domknięcie końcowe oraz kontrolować przechwytywanie za pomocą list. Domknięcia escapujące działają dłużej niż wywołanie, a nieescapujące są domyślne.
Często zadawane pytania
Czy lekcja „Podstawy closures i przechwytywania” jest bezpłatna?
Tak — pełny tekst „Podstawy closures i przechwytywania” 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 3 lekcji w sumie.
Co nauczysz się w „Podstawy closures i przechwytywania”?
Poznajcie składnię closures, skrócone argumenty, trailing closure, listy przechwytywania oraz różnice między closures escaping i non-escaping. Ć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 1 z 3.
Ile czasu zajmuje lekcja „Podstawy closures i przechwytywania”?
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
- Podstawy closures i przechwytywania
- Listy przechwytywania — weak/unowned i przechwytywanie wartości
- Escaping a non-escaping, autoclosures