Zig Academy · Lekcja

Odzwierciedlanie pól za pomocą @typeInfo

Przeanalizuj strukturę typu podczas kompilacji.

Lekcja 1 z 413 kroki

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. 🎯

Bezpłatny start

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

  1. Odzwierciedlanie pól za pomocą @typeInfo
  2. Budowanie typów za pomocą @Type
  3. Walidacja podczas kompilacji i @compileError
  4. Generowanie kodu za pomocą comptime
← Powrót do Zig Academy