0Pricing
Zig Academy · Lektion

Felder mit @typeInfo reflektieren

Untersuchen Sie die Struktur eines Typs zur Compile-Zeit.

Felder mit @typeInfo reflektieren ist eine kostenlose Zig Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Zig Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Zig Academy-Kurs umfasst insgesamt 4 Lektionen.

In jeden Typ hineinsehen

Zig ermöglicht es Ihrem Code, seine eigenen Typen während der Kompilierung zu untersuchen. Das eingebaute @typeInfo liefert Ihnen die vollständige Struktur eines Typs als Daten. 🔎

Es gibt einen Type.Info-Wert zurück

@typeInfo übernimmt einen Typ und gibt einen std.builtin.Type-Wert zurück. Dieser Wert ist eine Tagged Union, die genau beschreibt, um welche Art von Typ es sich handelt.

const info = @typeInfo(u32);

Das Tag gibt die Art an

Das Union-Tag gibt die Kategorie an: eine Struct, eine Ganzzahl, ein Zeiger und so weiter. Sie verwenden switch darauf, um auf jede Art von Typ zu reagieren.

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

Auf die Struct-Nutzdaten zugreifen

Wenn der Typ eine Struct ist, enthält die Variante .Struct Nutzdaten, die ihre Felder, Deklarationen und ihr Layout beschreiben.

const s = @typeInfo(Point).Struct;

Felder befinden sich in einem Array

Die Struct-Nutzdaten enthalten ein fields-Array. Jeder Eintrag ist ein StructField mit dem Namen, dem Typ und weiteren Details eines Feldes.

const fields = @typeInfo(Point).Struct.fields;

Namen und Typ eines Feldes lesen

Jeder StructField stellt einen name-String und einen Typ bereit. Beides sind Compile-Time-Werte, die Sie ausgeben oder für Verzweigungen verwenden können.

const f = @typeInfo(Point).Struct.fields[0];
const n = f.name;

Felder mit inline for durchlaufen

Da die Felderliste zur Compile-Zeit feststeht, durchlaufen Sie sie mit inline for. Die Schleife wird entrollt, sodass jedes Feld eigenen konkreten Code erhält.

inline for (@typeInfo(T).Struct.fields) |field| {
    _ = field.name;
}

Auch Integer-Typen untersuchen

Bei einer Ganzzahl gibt die Variante .Int das Vorzeichen und die Bitbreite an, sodass Sie die Logik an den genauen Zahlentyp anpassen können.

const i = @typeInfo(i16).Int;
const bits = i.bits;

Enums stellen ihre Elemente bereit

Die Variante .Enum listet jedes Enum-Feld mit seinem Namen und seinem Ganzzahlwert auf. So können Sie für jede Option Code erzeugen.

const e = @typeInfo(Color).Enum;
const fields = e.fields;

Zeiger geben ihr Ziel preis

Bei Zeigern gibt die Variante .Pointer den untergeordneten Typ, die Größenart und an, ob der Zeiger const ist. So können Sie mehrere Ebenen auflösen.

const p = @typeInfo(*u8).Pointer;
const child = p.child;

Das ermöglicht echte Bibliotheken

Reflection bildet die Grundlage für Zigs eigenen JSON- und Formatierungscode: Dieser liest Felder mit @typeInfo und verarbeitet jede Struct, die Sie ihm übergeben. ✨

Kurze Überprüfung

Sie benötigen die Liste der Felder einer Struct zur Compile-Zeit. Welcher Ausdruck liefert sie?

Zusammenfassung

@typeInfo wandelt einen Typ in Daten um: Untersuchen Sie sein Tag mit switch, lesen Sie anschließend Felder, Bits oder Elemente und durchlaufen Sie sie mit inline for. 🎯

Häufig gestellte Fragen

Ist die Lektion „Felder mit @typeInfo reflektieren“ kostenlos?

Ja — der vollständige Text von „Felder mit @typeInfo reflektieren“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Zig Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Zig Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Felder mit @typeInfo reflektieren“?

Untersuchen Sie die Struktur eines Typs zur Compile-Zeit. Du übst Zig Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Zig Academy zu starten?

Keine Vorkenntnisse erforderlich. Zig Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.

Wie lange dauert die Lektion „Felder mit @typeInfo reflektieren“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Zig Academy-Lektion Code schreiben und ausführen?

Ja. Jede Zig Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Felder mit @typeInfo reflektieren
  2. Typen mit @Type erstellen
  3. Comptime-Validierung und @compileError
  4. Code mit comptime generieren
← Zurück zu Zig Academy