0Pricing
Zig Academy · Lekcja

@TypeOf i refleksja typów

Sprawdzaj typy, aby zachować generyczność.

@TypeOf i refleksja typów to bezpłatna lekcja Zig Academy na CoddyKit. To lekcja 3 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.

Uzyskiwanie informacji o typach

Generyczny kod często musi znać typ wartości bez jego jawnego zapisywania. Zig zapewnia do tego wbudowany element @TypeOf. 🔍

@TypeOf zwraca typ

Przekaż do @TypeOf jedno lub więcej wyrażeń, a zwróci ich typ obliczony w całości podczas kompilacji.

const T = @TypeOf(value);

Wyrażenie nie jest wykonywane

Argument funkcji @TypeOf jest tylko analizowany, nigdy wykonywany. Nawet wywołanie funkcji umieszczone wewnątrz niego zostanie zbadane, ale nie zostanie faktycznie wykonane.

Przechwytywanie typu parametru

Wewnątrz funkcji generycznej można nazwać typ dowolnego argumentu i używać go ponownie, na przykład do zadeklarowania pasującej zmiennej lokalnej.

fn echo(x: anytype) void {
    const T = @TypeOf(x);
    _ = T;
}

Uzyskiwanie czytelnej nazwy

Wbudowany element @typeName zamienia typ na czytelny ciąg znaków, co przydaje się podczas wypisywania informacji debugowania lub komunikatów o błędach.

const name = @typeName(i32);

Głębsza refleksja za pomocą @typeInfo

Aby uzyskać pełne informacje, @typeInfo zwraca unię oznaczoną opisującą typ: informuje, czy jest to liczba całkowita, struktura, wskaźnik i nie tylko.

const info = @typeInfo(i32);

Rozgałęzianie na podstawie rodzaju typu

Ponieważ wynik jest unią oznaczoną, można użyć switch, aby w jednej funkcji generycznej różnie obsługiwać liczby całkowite, zmiennoprzecinkowe i struktury.

switch (@typeInfo(T)) {
    .int => {},
    else => {},
}

Odczytywanie szerokości bitowej liczby całkowitej

Gdy typ jest liczbą całkowitą, jego informacje zawierają pola takie jak bits i informacja o znaku, więc można dostosować logikę do dokładnej szerokości.

const bits = @typeInfo(u16).int.bits;

Refleksja pozwala zachować generyczność kodu

Analizując typy zamiast wpisywać je na stałe, jedna funkcja może poprawnie obsługiwać wiele typów wejściowych. To właśnie istota refleksji w Zig. ✨

Wszystko podczas kompilacji

Każdy wbudowany element refleksji działa podczas budowania, więc introspekcja nie dodaje żadnego narzutu w czasie działania programu do gotowego programu.

Wypisywanie pól struktury

W przypadku struktury @typeInfo udostępnia tablicę pól, po której można iterować podczas kompilacji, aby odczytać nazwę i typ każdego pola.

const fields = @typeInfo(Point).@"struct".fields;

Szybkie sprawdzenie

Wewnątrz funkcji generycznej masz wartość x i chcesz poznać jej typ. Który wbudowany element go zwróci?

Podsumowanie

Użyj @TypeOf, aby poznać typ wartości, oraz @typeInfo, aby zbadać jego strukturę. Rozgałęzianie na podstawie tych informacji pozwala jednej funkcji dostosować się do wielu typów. 🎯

Często zadawane pytania

Czy lekcja „@TypeOf i refleksja typów” jest bezpłatna?

Tak — pełny tekst „@TypeOf i refleksja 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 Zig Academy, przejdź na CoddyKit PRO. Kurs Zig Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „@TypeOf i refleksja typów”?

Sprawdzaj typy, aby zachować generyczność. Ć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 3 z 4.

Ile czasu zajmuje lekcja „@TypeOf i refleksja 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 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