@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
- Funkcje przyjmujące typ
- Generyczne struktury danych
- @TypeOf i refleksja typów
- Parametry anytype