Jak działa inferencja typów
Poznanie, jak Swift wyprowadza typy z kontekstu.
Jak działa inferencja typów to bezpłatna lekcja Swift 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 Swift Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Swift Academy zawiera 4 lekcji w sumie.
Czym jest wnioskowanie typów
Swift może wywnioskować typ wartości na podstawie kontekstu wyrażenia. Często nie trzeba jawnie zapisywać typu.
let count = 42
let name = "Swift"
print(type(of: count))
print(type(of: name))Wnioskowanie na podstawie literałów
Literał całkowitoliczbowy jest interpretowany jako Int, literał dziesiętny jako Double, a literał ujęty w cudzysłowy jako String.
let a = 10
let b = 3.14
let c = "hello"
print(type(of: a), type(of: b), type(of: c))Wnioskowanie na podstawie inicjalizatora
Gdy wywołują Państwo inicjalizator, typ wyniku determinuje typ wywnioskowany dla zmiennej.
let pi = Double.pi
let flag = Bool(true)
print(type(of: pi))
print(type(of: flag))Wnioskowanie na podstawie wartości zwracanej przez funkcję
Zmienna przypisana na podstawie wywołania funkcji przyjmuje typ zwracany przez tę funkcję.
func makeGreeting() -> String {
return "Hi"
}
let g = makeGreeting()
print(type(of: g))Wnioskowanie w kolekcjach
Typy elementów literałów tablic i słowników są wnioskowane na podstawie zawartych w nich wartości.
let nums = [1, 2, 3]
let pairs = ["a": 1, "b": 2]
print(type(of: nums))
print(type(of: pairs))Wnioskowanie dwukierunkowe
Swift wnioskuje typy w obu kierunkach: od wartości do zmiennej oraz od zadeklarowanego typu z powrotem do literału.
let x = 5 // Int inferred from literal
let y: Double = 5 // literal adapts to Double
print(type(of: x), type(of: y))Wnioskowanie w całych wyrażeniach
Kompilator wspólnie rozwiązuje typy całego wyrażenia, wybierając takie typy, które sprawiają, że wszystkie operacje są prawidłowe.
let result = 2 + 3 * 4
print(result)
print(type(of: result))Wnioskowanie ogranicza zbędny kod
Wnioskowanie sprawia, że kod jest przejrzysty. Zapis let names: [String] = [...] jest zbędny, gdy literał już wskazuje typ String.
let names = ["Ada", "Bob", "Cleo"]
print(names.count)Gdy wnioskowanie się nie powiedzie
Jeśli kompilator nie może znaleźć jednego typu, zgłasza błąd i trzeba dodać adnotację. Klasycznym przykładem są puste kolekcje.
let empty: [Int] = []
print(empty.isEmpty)Wnioskowanie jest statyczne
Wnioskowanie odbywa się w czasie kompilacji. Po wywnioskowaniu typ jest stały; Swift nie jest językiem typowanym dynamicznie.
var n = 10
// n = "text" // would be a compile error
n = 20
print(n)Wnioskowanie a wydajność
Wnioskowanie nie wiąże się z żadnym kosztem w czasie działania. Kompilator rozwiązuje typy przed utworzeniem pliku binarnego, więc kod z wnioskowaniem działa dokładnie tak szybko jak kod z jawnymi adnotacjami.
let total = (1...100).reduce(0, +)
print(total)Szybkie sprawdzenie
Sprawdź swoją znajomość wnioskowania typów.
Podsumowanie
Wnioskowanie typów pozwala językowi Swift wywnioskować typy na podstawie literałów, inicjalizatorów, wartości zwracanych i otaczającego kontekstu w czasie kompilacji. Ogranicza zbędny kod bez żadnego kosztu w czasie działania, ale nie działa, gdy nie można określić jednego typu, na przykład w przypadku pustych kolekcji.
let a = 1
let b = 2.0
let c = "x"
print(type(of: a), type(of: b), type(of: c))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 „Jak działa inferencja typów” jest bezpłatna?
Tak — pełny tekst „Jak działa inferencja typów” 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 „Jak działa inferencja typów”?
Poznanie, jak Swift wyprowadza typy z kontekstu. Ć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 4.
Ile czasu zajmuje lekcja „Jak działa inferencja typów”?
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
- Jak działa inferencja typów
- Kiedy dodawać jawne adnotacje
- Inferencja na podstawie literałów
- Inferencja w domknięciach