0Pricing
Zig Academy · Lekcja

Funkcje przyjmujące typ

Twórz generyki za pomocą parametrów comptime T.

Funkcje przyjmujące typ to bezpłatna lekcja Zig 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 Zig Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Zig Academy zawiera 4 lekcji w sumie.

Generyki po zigowemu

Zig nie ma osobnej składni generyków. Zamiast tego funkcja może przyjmować typ jako jeden ze swoich parametrów i używać go tak jak każdej innej wartości. ✨

Parametr typu jest comptime

Ponieważ typ musi być znany podczas budowania kodu, parametr typu jest zawsze oznaczany jako comptime. Wywołujący przekazuje rzeczywisty typ.

fn first(comptime T: type, items: []const T) T {
    return items[0];
}

type jest rzeczywistym typem

W Zig słowo type samo jest typem, więc parametr zadeklarowany jako type może oznaczać dowolny typ.

comptime T: type

Używanie T w sygnaturze

Po nazwaniu typu jako T można używać go przy kolejnych parametrach i typie zwracanym, wiążąc je ze sobą.

fn max(comptime T: type, a: T, b: T) T {
    return if (a > b) a else b;
}

Wywoływanie funkcji generycznej

Aby ją wywołać, najpierw przekaż konkretny typ, a następnie zwykłe argumenty. Tutaj prosimy o większą z dwóch wartości typu i32.

const m = max(i32, 3, 9);

Jedna funkcja, wiele typów

Ta sama funkcja działa dla każdego typu obsługującego używane operacje. Zamień i32 na f64, a kod nadal będzie działać.

const f = max(f64, 1.5, 2.5);

Zig specjalizuje każde wywołanie

Dla każdego przekazanego, odrębnego typu Zig generuje dedykowaną kopię funkcji. Nazywa się to monomorfizacją i odbywa się podczas kompilacji.

Treść pozostaje generyczna

Podczas wywołania jawnie podajesz typ, ale treść funkcji pozostaje generyczna. Zig sprawdza, czy używane operacje są prawidłowe dla dowolnej wartości T, która zostanie przekazana.

type oznacza brak ukrytego opakowywania

Przekazywanie rzeczywistego typu różni się od polimorfizmu w czasie działania: nie ma tu vtable ani opakowywania, tylko konkretna kopia wybrana podczas budowania.

Błędy ujawniają się podczas kompilacji

Jeśli wywołasz max z typem, który nie ma operatora większe niż, Zig zgłosi problem podczas budowania tej specjalizacji, a nie w czasie działania programu.

Parametry typu są umieszczane na początku

Zgodnie z konwencją parametr typu comptime umieszcza się przed parametrami wartości, aby typ był znany przed opisaniem danych.

fn clone(comptime T: type, value: T) T {
    return value;
}

Szybkie sprawdzenie

Chcesz utworzyć w Zig funkcję działającą dla wielu typów. Jak zadeklarować jej parametr typu?

Podsumowanie

Przekaż parametr comptime T: type, aby utworzyć funkcję generyczną. Zig buduje wyspecjalizowaną wersję dla każdego faktycznie użytego typu. 🎯

Często zadawane pytania

Czy lekcja „Funkcje przyjmujące typ” jest bezpłatna?

Tak — pełny tekst „Funkcje przyjmujące typ” 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 Zig Academy, przejdź na CoddyKit PRO. Kurs Zig Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Funkcje przyjmujące typ”?

Twórz generyki za pomocą parametrów comptime T. Ćwiczysz Zig 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ąć Zig Academy?

Nie wymagamy żadnego doświadczenia. Zig 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 przyjmujące typ”?

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

Tak. Każda lekcja Zig 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 przyjmujące typ
  2. Generyczne struktury danych
  3. @TypeOf i refleksja typów
  4. Parametry anytype
← Powrót do Zig Academy