Fungsi yang Menerima Tipe
Gunakan generik melalui parameter comptime T.
Fungsi yang Menerima Tipe adalah pelajaran Zig Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Zig Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Zig Academy mencakup 4 pelajaran total.
Bagian dari pelajaran ini belum diterjemahkan dan ditampilkan dalam bahasa Inggris.
Generics, the Zig Way
Zig has no separate generics syntax. Instead, a function can accept a type as one of its parameters and use it like any other value. ✨
A Type Parameter Is comptime
Because a type must be known when the code is built, the type parameter is always marked comptime. The caller passes a real type.
fn first(comptime T: type, items: []const T) T {
return items[0];
}type Is a Real Type
In Zig the word type is itself a type, so a parameter can be declared as type to mean any type at all.
comptime T: typeUse T in the Signature
Once you name the type T, you can use it for later parameters and the return type, tying them all together.
fn max(comptime T: type, a: T, b: T) T {
return if (a > b) a else b;
}Calling a Generic Function
To call it, pass the concrete type first, then the regular arguments. Here we ask for the larger of two i32 values.
const m = max(i32, 3, 9);One Function, Many Types
The same function works for any type that supports the operations you use. Swap i32 for f64 and the code still fits.
const f = max(f64, 1.5, 2.5);Zig Specializes Each Call
For every distinct type you pass, Zig generates a dedicated copy of the function. This is monomorphization, done at compile time.
The Body Stays Generic
You write the type explicitly at the call, but the body stays generic. Zig checks that the operations you use are valid for whatever T arrives.
type Means No Hidden Boxing
Passing a real type is different from runtime polymorphism: there is no vtable and no boxing, just a concrete copy chosen at build time.
Errors Surface at Compile Time
If you call max with a type that has no greater-than operator, Zig reports the problem when it builds that specialization, not at run time.
Type Parameters Come First
By convention the comptime type parameter is listed before the value parameters, so the type is known before the data is described.
fn clone(comptime T: type, value: T) T {
return value;
}Quick Check
You want a function that works for many types in Zig. How do you declare its type parameter?
Recap
Pass a comptime T: type parameter to make a function generic. Zig builds a specialized version for every type you actually use. 🎯
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Fungsi yang Menerima Tipe” gratis?
Ya — teks lengkap “Fungsi yang Menerima Tipe” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Zig Academy, upgrade ke CoddyKit PRO. Kursus Zig Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Fungsi yang Menerima Tipe”?
Gunakan generik melalui parameter comptime T. Kamu berlatih Zig Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Zig Academy?
Tidak diperlukan pengalaman sebelumnya. Zig Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Fungsi yang Menerima Tipe” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Zig Academy ini?
Ya. Setiap pelajaran Zig Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Fungsi yang Menerima Tipe
- Struktur Data Generik
- @TypeOf dan Refleksi Tipe
- Parameter anytype