anytype-Parameter
Akzeptieren Sie mit Duck-Typing beliebige Argumente.
anytype-Parameter ist eine kostenlose Zig Academy-Lektion auf CoddyKit. Dies ist Lektion 4 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.
Mit anytype alles akzeptieren
Manchmal möchten Sie den Typ überhaupt nicht benennen. Deklarieren Sie einen Parameter als anytype, damit Zig seinen Typ aus dem Argument ableitet. 🦆
fn show(x: anytype) void {}Der Typ wird beim Aufruf abgeleitet
Bei anytype gibt es keinen vorangestellten Typparameter. Das Argument jedes Aufrufers bestimmt den konkreten Typ für diese Spezialisierung.
show(42);
show(true);Das ist Duck Typing
Zig prüft lediglich, ob die Operationen im Funktionskörper mit dem übergebenen Argument funktionieren. Wenn es die richtige Form besitzt, passt es. Das ist Duck Typing.
Den Typ bei Bedarf wiederherstellen
Innerhalb der Funktion können Sie den Typ weiterhin mit @TypeOf abfragen und ihn anschließend für lokale Variablen oder Rückgabewerte verwenden.
fn dup(x: anytype) @TypeOf(x) {
return x;
}Ideal für Helfer im Stil von Print
Funktionen, die mit vielen Formen arbeiten, eignen sich hervorragend für anytype. Zigs eigenes print akzeptiert ein anytype-Tupel von Argumenten zur Formatierung.
std.debug.print("{any}\n", .{x});Die Einschränkungen ergeben sich aus dem Funktionskörper
Es gibt kein explizites Interface. Wenn Sie innerhalb der Funktion x.len aufrufen, können nur Argumente mit einem tatsächlichen len-Feld kompiliert werden.
fn size(x: anytype) usize {
return x.len;
}Fehler gelten pro Spezialisierung
Wenn ein Aufrufer einen Typ übergibt, den der Funktionskörper nicht verarbeiten kann, meldet Zig den Fehler an dieser Aufrufstelle und nennt den genau betroffenen Typ.
Eingaben mit comptime validieren
Für verständlichere Fehlermeldungen können Sie den Typ frühzeitig mit @typeInfo untersuchen und die falsche Form mit einer Compile-Time-Prüfung zurückweisen.
anytype vs. comptime T: type
Verwenden Sie comptime T: type, wenn Sie den Typ von Anfang an benennen müssen. Verwenden Sie anytype, wenn Ableitung und Flexibilität wichtiger sind.
Weiterhin keine Kosten zur Laufzeit
Wie jedes Zig-Generic wird auch eine anytype-Funktion zur Compile-Zeit spezialisiert. Die Flexibilität durch die Ableitung kostet daher beim Ausführen des Programms nichts.
anytype mit benannten Typen kombinieren
Eine Funktion kann beide Stile kombinieren: einen anytype-Parameter für flexible Eingaben zusammen mit normalen typisierten Parametern für feste Daten.
fn join(sep: u8, x: anytype) void {
_ = sep;
_ = x;
}Kurztest
Sie schreiben fn show(x: anytype). Wie bestimmt Zig den konkreten Typ von x?
Zusammenfassung
Mit dem Schlüsselwort anytype kann ein Parameter jedes Argument akzeptieren; der Typ wird abgeleitet und der Funktionskörper für jeden Aufruf geprüft. Das ist Zigs flexibles Duck Typing. 🎯
Häufig gestellte Fragen
Ist die Lektion „anytype-Parameter“ kostenlos?
Ja — der vollständige Text von „anytype-Parameter“ 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 „anytype-Parameter“?
Akzeptieren Sie mit Duck-Typing beliebige Argumente. 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 4 von 4.
Wie lange dauert die Lektion „anytype-Parameter“?
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
- Funktionen, die einen Typ übernehmen
- Generische Datenstrukturen
- @TypeOf und Typreflexion
- anytype-Parameter