Types bouwen met @Type
Construeer programmatisch nieuwe types
Types bouwen met @Type is een gratis Zig Academy-les op CoddyKit. Dit is les 2 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Zig Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Zig Academy bevat in totaal 4 lessen.
Het omgekeerde van @typeInfo
Als @typeInfo een type omzet in gegevens, zet @Type gegevens weer om in een echt type. Samen laten ze je types tijdens het compileren hervormen. 🛠️
Een Type.Info-waarde invoeren
@Type neemt een std.builtin.Type-waarde aan en maakt het concrete type dat deze beschrijft. Je geeft een beschrijving door en krijgt een type terug.
const T = @Type(.{ .Int = .{ .signedness = .unsigned, .bits = 8 } });Een integertype opbouwen
Het bovenstaande voorbeeld construeert u8 vanaf nul. Verander bits in 16 en je krijgt u16; alles wordt tijdens het compileren beslist.
const U16 = @Type(.{ .Int = .{ .signedness = .unsigned, .bits = 16 } });Een type heen en terug omzetten
Als je een type via @typeInfo doorgeeft en daarna @Type gebruikt, krijg je exact hetzelfde type terug. Dit bewijst dat de twee ingebouwde functies elkaars inverse zijn.
const Same = @Type(@typeInfo(u32));Een Struct als gegevens beschrijven
Om een struct te bouwen, vul je een array met StructField-elementen in. Elk veld heeft een naam, een type, een uitlijning en een standaardpointer nodig.
const f = std.builtin.Type.StructField;De Struct-payload samenstellen
Verpak je velden in een .Struct-payload met een layout en een is_tuple-vlag en geef het geheel vervolgens door aan @Type.
const info = .{ .Struct = .{
.layout = .auto,
.fields = my_fields,
.decls = &.{},
.is_tuple = false,
} };Een nieuw Struct-type genereren
Roep @Type aan met die payload en je krijgt een gloednieuw struct-type, opgebouwd door je eigen logica in plaats van handmatig geschreven.
const Generated = @Type(info);Standaardwaarden hebben een comptime-pointer nodig
De default_value van een veld is een optionele const-pointer naar de waarde, of null als er geen standaardwaarde is. De pointer moet tijdens comptime bekend zijn.
const dv: ?*const anyopaque = &@as(u8, 0);Enums en meer bouwen
Dezelfde techniek werkt ook voor andere zaken dan structs: met de .Enum-payload kan @Type enum-types samenstellen uit een berekende lijst met leden.
Waarom überhaupt types samenstellen
Gegenereerde types vormen de basis voor serializers en ORM's: leid automatisch een packed configuratie- of rijtype af in plaats van het handmatig te bewerken. ✨
Combineren met reflectie
Het krachtigste patroon leest een type met @typeInfo, transformeert de gegevens en bouwt daarna een nieuw type met @Type, bijvoorbeeld door een veld toe te voegen.
Korte controle
Je hebt een std.builtin.Type-waarde die een struct beschrijft. Wat zet deze om in een bruikbaar type?
Samenvatting
@Type bouwt echte types uit Type.Info-gegevens en is het omgekeerde van @typeInfo. Combineer ze om types te lezen, te transformeren en opnieuw te genereren. 🎯
Leer Zig met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 30
- Lessen
- 120
Veelgestelde vragen
Is de les “Types bouwen met @Type” gratis?
Ja — de volledige tekst van “Types bouwen met @Type” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Zig Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Zig Academy bevat in totaal 4 lessen.
Wat leer ik in “Types bouwen met @Type”?
Construeer programmatisch nieuwe types Je oefent met Zig Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Zig Academy te beginnen?
Ervaring vooraf is niet nodig. Zig Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.
Hoe lang duurt de les “Types bouwen met @Type”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Zig Academy?
Ja. Elke les over Zig Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Velden reflecteren met @typeInfo
- Types bouwen met @Type
- Comptime-validatie en @compileError
- Code genereren met comptime