Zig Academy · Les

anytype-parameters

Accepteer elk argument met duck typing

Les 4 van 413 stappen

anytype-parameters is een gratis Zig Academy-les op CoddyKit. Dit is les 4 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.

Alles accepteren met anytype

Soms wil je het type helemaal niet benoemen. Declareer een parameter als anytype en Zig leidt het type af uit het argument. 🦆

fn show(x: anytype) void {}

Het type wordt bij de aanroep afgeleid

Met anytype is er geen voorafgaande typeparameter. Het argument van elke aanroeper bepaalt het concrete type voor die specialisatie.

show(42);
show(true);

Dit is duck typing

Zig controleert alleen of de bewerkingen in de body werken voor het argument dat je doorgeeft. Als het de juiste vorm heeft, past het. Dat is duck typing.

Het type achterhalen als dat nodig is

Binnen de functie kun je nog steeds het type opvragen met @TypeOf en het daarna gebruiken voor lokale variabelen of retourwaarden.

fn dup(x: anytype) @TypeOf(x) {
    return x;
}

Ideaal voor hulpfuncties in printstijl

Functies die met veel vormen werken, zijn dol op anytype. Zig's eigen print accepteert een anytype-tuple met argumenten om te formatteren.

std.debug.print("{any}\n", .{x});

Beperkingen komen uit de body

Er is geen expliciete interface. Als je binnen de functie x.len aanroept, kunnen alleen argumenten met daadwerkelijk een len-veld worden gecompileerd.

fn size(x: anytype) usize {
    return x.len;
}

Fouten gelden per specialisatie

Als een aanroeper een type doorgeeft dat de body niet kan verwerken, meldt Zig de fout op die aanroepplek en noemt het exacte type dat is mislukt.

Invoer valideren met comptime

Voor duidelijkere fouten kun je het type vroeg inspecteren met @typeInfo en de verkeerde vorm afwijzen met een compileertijdcontrole.

anytype tegenover comptime T: type

Gebruik comptime T: type wanneer je het type vooraf moet benoemen; kies anytype wanneer afleiding en flexibiliteit belangrijker zijn.

Nog steeds geen runtimekosten

Net als elke generieke functie in Zig wordt een anytype-functie tijdens het compileren gespecialiseerd. De flexibiliteit van de afleiding kost dus niets tijdens het uitvoeren van het programma.

anytype combineren met benoemde typen

Een functie kan beide stijlen combineren: één anytype-parameter voor flexibele invoer naast gewone getypeerde parameters voor vaste gegevens.

fn join(sep: u8, x: anytype) void {
    _ = sep;
    _ = x;
}

Korte controle

Je schrijft fn show(x: anytype). Hoe bepaalt Zig het concrete type van x?

Samenvatting

Met het sleutelwoord anytype kan een parameter elk argument accepteren. Het type wordt afgeleid en de body wordt per aanroep gecontroleerd. Dit is Zig's flexibele duck typing. 🎯

Gratis beginnen

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 “anytype-parameters” gratis?

Ja — de volledige tekst van “anytype-parameters” 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 “anytype-parameters”?

Accepteer elk argument met duck typing 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 4 van 4.

Hoe lang duurt de les “anytype-parameters”?

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

  1. Functies die een type ontvangen
  2. Generieke datastructuren
  3. @TypeOf en type-reflectie
  4. anytype-parameters
← Terug naar Zig Academy