for Generik dan break
Gunakan for generik dengan pairs/ipairs dan kawal aliran gelung menggunakan break.
for Generik dan break ialah pelajaran Lua Academy percuma di CoddyKit. Ini ialah pelajaran 4 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Lua Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Lua Academy merangkumi sejumlah 4 pelajaran.
Protokol for Umum
Gelung for umum Lua berfungsi dengan fungsi lelar. Sintaksnya ialah for vars in iter_func, state, init do. Pada setiap lelaran, Lua memanggil iter_func(state, lastVar) dan menetapkan nilai yang dikembalikan kepada vars. Gelung berhenti apabila nilai pertama yang dikembalikan ialah nil.
-- Manual use of next() iterator
local t = {a=1, b=2, c=3}
local key, val = next(t, nil) -- first entry
while key ~= nil do
print(key, val)
key, val = next(t, key) -- advance
endpairs() untuk Semua Kunci
pairs(t) mengembalikan fungsi lelar yang melintasi semua pasangan kunci-nilai dalam jadual, termasuk kunci rentetan, kunci integer dan jadual bercampur. Susunan lelaran bagi kunci bukan integer tidak ditentukan (susunan cincangan). Bahagian tatasusunan dan bahagian cincangan kedua-duanya disertakan.
local config = {
host = "localhost",
port = 8080,
debug = true,
[1] = "first",
}
for key, value in pairs(config) do
print(key, value)
end
-- Prints all 4 entries in any orderipairs() untuk Kunci Tatasusunan
ipairs(t) melalui kunci integer bermula dari 1 dan berhenti pada nilai nil pertama. Ia selamat, boleh dijangka dan mengekalkan susunan. Gunakan ipairs untuk jadual seperti tatasusunan apabila susunan penting dan anda mahu berhenti pada ruang kosong pertama.
local fruits = {"apple", "banana", "cherry"}
for i, fruit in ipairs(fruits) do
print(i, fruit)
end
-- 1 apple
-- 2 banana
-- 3 cherry
-- stops at first nil
local t = {10, 20, nil, 40}
for i, v in ipairs(t) do
print(i, v) -- only 1,10 and 2,20
endpairs berbanding ipairs
Ketahui masa untuk menggunakan setiap satunya: ipairs adalah untuk tatasusunan berjujukan yang tersusun; pairs adalah untuk kamus atau jadual bercampur. ipairs berhenti pada ruang kosong nil pertama; pairs melawati setiap kunci bukan nil. Untuk tatasusunan tulen, ipairs lebih lazim digunakan.
local mixed = {10, 20, key="val", 30}
-- ipairs only sees array part in order
print("ipairs:")
for i, v in ipairs(mixed) do
print(i, v) -- 1:10, 2:20, 3:30
end
-- pairs sees everything
print("pairs:")
for k, v in pairs(mixed) do
print(k, v) -- 1:10, 2:20, 3:30, key:val
endFungsi Lelaran Tersuai dengan Penutupan
Anda boleh menulis fungsi lelar anda sendiri sebagai penutupan. Fungsi kilang mengembalikan penutupan berkeadaan yang memajukan kedudukan pada setiap panggilan. Apabila tiada lagi nilai untuk dikembalikan, fungsi itu mengembalikan nil untuk menghentikan for umum.
local function range(from, to, step)
step = step or 1
local i = from - step
return function()
i = i + step
if i <= to then return i end
end
end
for n in range(1, 10, 2) do
io.write(n .. " ")
end
print() -- 1 3 5 7 9string.gmatch sebagai Fungsi Lelaran
string.gmatch(s, pattern) mengembalikan fungsi lelar yang menghasilkan semua padanan corak dalam rentetan s. Ia lazim digunakan untuk memisahkan rentetan, mengekstrak token atau mencari semua kemunculan sesuatu corak.
local sentence = "the quick brown fox"
for word in string.gmatch(sentence, "%a+") do
print(word)
end
-- the
-- quick
-- brown
-- foxbreak dalam for Umum
Anda boleh keluar lebih awal daripada gelung for umum menggunakan break. Hal ini berguna untuk carian: lelar sehingga padanan ditemui, kemudian gunakan break. Selepas keluar, pelaksanaan diteruskan pada pernyataan selepas end.
local inventory = {
{name="sword", damage=50},
{name="shield", armor=30},
{name="bow", damage=35},
}
local target = "shield"
for i, item in ipairs(inventory) do
if item.name == target then
print("Found at index", i)
break
end
endMengubah Jadual Semasa Lelaran
Jangan sesekali memasukkan atau membuang kunci daripada jadual semasa melakukan lelaran dengan pairs() — tingkah lakunya tidak ditentukan (sesetengah perubahan mungkin dilihat, manakala perubahan lain dilangkau). Jika anda perlu mengubah jadual, kumpulkan perubahan dalam senarai sementara dan gunakannya selepas gelung.
local t = {a=1, b=2, c=3, d=4}
local toDelete = {}
-- Collect keys to delete
for k, v in pairs(t) do
if v % 2 == 0 then
toDelete[#toDelete+1] = k
end
end
-- Delete after iteration
for _, k in ipairs(toDelete) do
t[k] = nil
end
-- t = {a=1, c=3}Corak Penghitungan
Apabila anda memerlukan kedua-dua indeks dan nilai, gunakan ipairs yang menyediakan kedua-duanya. Apabila anda hanya memerlukan nilai dan tidak mengambil berat tentang indeks, anda boleh menggunakan _ sebagai nama pemboleh ubah konvensional yang bermaksud indeks tidak diperlukan.
local colors = {"red", "green", "blue"}
-- With index
for i, color in ipairs(colors) do
print(i .. ": " .. color)
end
-- Ignore index with _
for _, color in ipairs(colors) do
print(color) -- just the values
endnext() Secara Terus
next(t, key) ialah fungsi asas untuk melintasi jadual. Ia mengembalikan pasangan kunci-nilai seterusnya selepas key, atau nil jika tiada lagi pasangan. next(t, nil) memberikan entri pertama. Anda boleh menggunakan next(t) ~= nil untuk memeriksa sama ada jadual tidak kosong — lebih pantas daripada mengira kandungannya.
local function isEmpty(t)
return next(t) == nil
end
print(isEmpty({})) -- true
print(isEmpty({1,2,3})) -- false
print(isEmpty({a=1})) -- falseSemakan Pantas
Fungsi lelar yang manakah berhenti pada ruang kosong nil pertama dalam jadual?
Imbas Kembali: for Umum dan break
Ringkasan:
pairs(t)— semua kunci, dalam sebarang susunanipairs(t)— kunci integer 1..n, tersusun, berhenti pada nil- Fungsi lelar tersuai: mengembalikan penutupan yang mengembalikan nil untuk berhenti
breakkeluar daripada gelung lebih awal- Jangan ubah jadual semasa pairs berlangsung; kumpulkan perubahan dan gunakannya selepas itu
next(t) == nil— pemeriksaan kosong yang pantas
Pelajari Lua dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 40
- Pelajaran
- 159
Soalan Lazim
Adakah pelajaran “for Generik dan break” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Lua Academy, termasuk “for Generik dan break”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Lua Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “for Generik dan break”?
Gunakan for generik dengan pairs/ipairs dan kawal aliran gelung menggunakan break. Anda berlatih Lua Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Lua Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Lua Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 4 daripada 4.
Berapa lamakah pelajaran “for Generik dan break” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Lua Academy ini?
Ya. Setiap pelajaran Lua Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Pernyataan if, elseif dan else
- Gelung while dan repeat-until
- Gelung for Berangka
- for Generik dan break