Swift Academy · Lekcja

Jak działa inferencja typów

Poznanie, jak Swift wyprowadza typy z kontekstu.

Lekcja 1 z 413 kroki

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))
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 „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

  1. Jak działa inferencja typów
  2. Kiedy dodawać jawne adnotacje
  3. Inferencja na podstawie literałów
  4. Inferencja w domknięciach
← Powrót do Swift Academy