Odzwierciedlanie pól za pomocą @typeInfo
Przeanalizuj strukturę typu podczas kompilacji.
Odzwierciedlanie pól za pomocą @typeInfo 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.
Zajrzyj do dowolnego typu
Zig pozwala kodowi analizować własne typy podczas kompilacji. Wbudowane @typeInfo udostępnia pełną strukturę typu jako dane. 🔎
Zwraca wartość Type.Info
@typeInfo przyjmuje typ i zwraca wartość std.builtin.Type. Ta wartość jest unią tagowaną, która dokładnie opisuje rodzaj przekazanego typu.
const info = @typeInfo(u32);Tag określa rodzaj
Tag unii informuje o kategorii: strukturze, liczbie całkowitej, wskaźniku i tak dalej. Używasz switch, aby reagować na każdy rodzaj typu.
switch (@typeInfo(T)) {
.Struct => {},
else => {},
}Uzyskaj dane struktury
Gdy typ jest strukturą, wariant .Struct zawiera dane opisujące jej pola, deklaracje i układ.
const s = @typeInfo(Point).Struct;Pola znajdują się w tablicy
Dane struktury zawierają tablicę fields. Każdy element to StructField przechowujący nazwę pola, jego typ i inne szczegóły.
const fields = @typeInfo(Point).Struct.fields;Odczytaj nazwę i typ pola
Każdy StructField udostępnia ciąg znaków name oraz typ. Obie wartości są dostępne w czasie kompilacji, więc można je wyświetlać lub wykorzystywać w rozgałęzieniach.
const f = @typeInfo(Point).Struct.fields[0];
const n = f.name;Przejdź po polach za pomocą inline for
Ponieważ lista pól jest dostępna w czasie kompilacji, iterujesz po niej za pomocą inline for. Pętla jest rozwijana, dzięki czemu każde pole otrzymuje własny konkretny kod.
inline for (@typeInfo(T).Struct.fields) |field| {
_ = field.name;
}Analizuj także typy całkowite
W przypadku liczby całkowitej wariant .Int ujawnia jej znakowość i szerokość w bitach, dzięki czemu możesz dostosować logikę do dokładnego typu liczbowego.
const i = @typeInfo(i16).Int;
const bits = i.bits;Enumy udostępniają swoje elementy
Wariant .Enum wylicza wszystkie pola enuma wraz z ich nazwami i wartościami całkowitymi, co pozwala generować kod dla każdej opcji.
const e = @typeInfo(Color).Enum;
const fields = e.fields;Wskaźniki ujawniają typ docelowy
W przypadku wskaźników wariant .Pointer informuje o typie wskazywanym, rodzaju rozmiaru oraz o tym, czy wskaźnik jest const, dzięki czemu możesz rozpakowywać kolejne warstwy.
const p = @typeInfo(*u8).Pointer;
const child = p.child;To napędza prawdziwe biblioteki
Refleksja napędza własny kod Zig do obsługi JSON i formatowania: kod ten odczytuje pola za pomocą @typeInfo i obsługuje każdą przekazaną strukturę. ✨
Szybkie sprawdzenie
Chcesz uzyskać w czasie kompilacji listę pól struktury. Które wyrażenie ją zwróci?
Podsumowanie
@typeInfo zamienia typ w dane: użyj switch na jego tagu, a następnie odczytaj pola, bity lub elementy i przejdź po nich za pomocą inline for. 🎯
Ucz się Zig 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
- 30
- Lekcje
- 120
Często zadawane pytania
Czy lekcja „Odzwierciedlanie pól za pomocą @typeInfo” jest bezpłatna?
Tak — pełny tekst „Odzwierciedlanie pól za pomocą @typeInfo” 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 „Odzwierciedlanie pól za pomocą @typeInfo”?
Przeanalizuj strukturę typu podczas kompilacji. Ć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 „Odzwierciedlanie pól za pomocą @typeInfo”?
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
- Odzwierciedlanie pól za pomocą @typeInfo
- Budowanie typów za pomocą @Type
- Walidacja podczas kompilacji i @compileError
- Generowanie kodu za pomocą comptime