Protokol for Generik
Pahami protokol iterator tiga nilai: fungsi iterator, keadaan, dan variabel kendali.
Protokol for Generik adalah pelajaran Lua 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 Lua Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Lua Academy mencakup 4 pelajaran total.
Cara Kerja for Generik
Pernyataan for memanggil fungsi pengiterasi pada setiap iterasi. Pernyataan ini meneruskan keadaan dan variabel kendali, lalu berhenti saat fungsi mengembalikan nil.
Pengembalian Tiga Nilai
for var in iter, state, init do—Lua membongkar ini menjadi: fungsi pengiterasi iter, keadaan tetap state, dan variabel kendali awal init.
Protokol ipairs
ipairs(t) mengembalikan fungsi pengiterasi tanpa keadaan, tabel sebagai keadaan, dan 0 sebagai variabel kendali awal. Setiap pemanggilan mengembalikan indeks dan nilai berikutnya.
for i, v in ipairs({10, 20, 30}) do
print(i, v)
endPengiterasi Tiga Nilai Kustom
Terapkan pengiterasi tanpa keadaan kustom dengan menyediakan ketiga nilai secara eksplisit.
local function iter(t, i)
i = i + 1
local v = t[i]
if v then return i, v end
end
for i, v in iter, {"a","b","c"}, 0 do
print(i, v)
endMenyederhanakan dengan Fungsi Penutup
Pengiterasi berbasis fungsi penutup hanya perlu mengembalikan fungsi pengiterasi (tidak memerlukan keadaan atau variabel kendali karena keduanya berada dalam upvalue).
local function values(t)
local i = 0
return function()
i = i + 1
return t[i]
end
end
for v in values({1,2,3}) do print(v) endnil Mengakhiri Perulangan
Perulangan for generik keluar segera setelah fungsi pengiterasi mengembalikan nil sebagai nilai pengembalian pertama. Inilah kontrak penghentian perulangan.
Beberapa Nilai Pengembalian
Pengiterasi dapat mengembalikan beberapa nilai; setiap nilai dipetakan ke variabel perulangan: for k, v in pairs(t).
for k, v in pairs({x=1, y=2}) do
print(k, v)
endPenggunaan Parameter Keadaan
Parameter keadaan diteruskan tanpa perubahan ke setiap pemanggilan pengiterasi. Untuk pengiterasi tanpa keadaan, parameter ini memuat seluruh konteks yang diperlukan, misalnya tabel itu sendiri.
Coroutine.wrap sebagai Pengiterasi
coroutine.wrap(fn) mengembalikan fungsi yang melanjutkan coroutine pada setiap pemanggilan; nilai yang dihasilkan menjadi nilai pengembalian—sempurna sebagai pengiterasi for generik.
local function countdown(n)
return coroutine.wrap(function()
for i = n, 1, -1 do coroutine.yield(i) end
end)
end
for v in countdown(5) do print(v) endKomposisi Pengiterasi
Pengiterasi dapat dikomposisikan: bungkus satu pengiterasi dengan pengiterasi lain untuk menambahkan penyaringan atau transformasi.
local function mapped(iter, fn)
return function()
local v = iter()
if v ~= nil then return fn(v) end
end
endPengiterasi Tak Terbatas
Pengiterasi yang tidak pernah mengembalikan nil akan membuat perulangan tak terbatas. Selalu berikan kondisi penghentian atau break.
local function naturals()
local n = 0
return function() n = n+1; return n end
end
for v in naturals() do
if v > 5 then break end
print(v)
endPertanyaan tentang for Generik
Kapan perulangan for generik berhenti?
Ringkasan: Protokol for Generik
For generik memanggil fungsi pengiterasi dengan keadaan tetap dan variabel kendali. Perulangan berhenti saat menerima nil. Fungsi penutup menyederhanakan pengiterasi berkeadaan dengan menyimpan keadaan dalam upvalue.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Protokol for Generik” gratis?
Ya — teks lengkap “Protokol for Generik” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Lua Academy, upgrade ke CoddyKit PRO. Kursus Lua Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Protokol for Generik”?
Pahami protokol iterator tiga nilai: fungsi iterator, keadaan, dan variabel kendali. Kamu berlatih Lua 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 Lua Academy?
Tidak diperlukan pengalaman sebelumnya. Lua 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 “Protokol for Generik” 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 Lua Academy ini?
Ya. Setiap pelajaran Lua 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
- Protokol for Generik
- Iterator Tanpa Keadaan
- Iterator Berkeadaan dengan Closure
- Generator Berbasis Coroutine