Lua - Penjurut: Panduan untuk Pemula

Hai, bakat pemrogram Lua masa depan! Hari ini, kita akan memulakan sebuah perjalanan menarik ke dunia penjurut Lua. Jangan khawatir jika anda baru dalam bidang programming - saya akan menjadi panduannya yang ramah, dan kita akan mengambil ini secara berperingkat. Pada akhir panduan ini, anda akan menjadi penjurut seperti seorang pro!

Lua - Iterators

Apa Itu Penjurut?

Sebelum kita mendalam, mari kita memahami apa penjurut itu. Bayangkan anda mempunyai sehelai keranjang apple, dan anda mahu mengesan setiap apple satu per satu. Penjurut adalah seperti tangan ajaib yang membantu anda mengambil setiap apple bergilir, tanpa anda perlu bimbang tentang berapa banyak apple di dalam keranjang atau bagaimana mereka diatur.

Dalam istilah programming, penjurut adalah objek yang membolehkan kita melintasi semua unsur di dalam satu koleksi (seperti array atau jadual di Lua) tanpa perlu mengetahui struktur asas koleksi itu.

Sekarang, mari kita jelajahi jenis-jenis penjurut berbeza di Lua!

Penjurut Generik

Loopternakan generik adalah cara paling biasa untuk menggunakan penjurut di Lua. Ia mudah, elegan, dan kuat. Mari kita mulakan dengan contoh asas:

local buah = {"apple", "banana", "orange", "grape"}

for i, buah_buah in ipairs(buah) do
print(i .. ": " .. buah_buah)
end

Jika anda jalankan kod ini, anda akan melihat:

1: apple
2: banana
3: orange
4: grape

Mari kita pecahkan ini:

  • Kita buat satu jadual (array) buah.
  • Kita gunakan loop for dengan ipairs, yang merupakan fungsi penjurut binaan.
  • i adalah indeks, dan buah_buah adalah nilai di indeks itu.
  • Loop secara automatik berhenti apabila ia mencapai akhir jadual.

Bukan itu menarik? Seperti tangan ajaib kita mengambil setiap buah dan memberitahu kita posisinya di dalam keranjang!

Contoh Lain: Melintasi Dictionary

Mari cuba sesuatu yang sedikit berbeza:

local person = {name = "Alice", age = 30, job = "Developer"}

for key, value in pairs(person) do
print(key .. " = " .. value)
end

Ini akan outputkan:

name = Alice
age = 30
job = Developer

Di sini, kita menggunakan pairs bukan ipairs. pairs adalah hebat untuk jadual yang bukan hanya senarai mudah, seperti jadual person kita.

Penjurut Tak Ada Keadaan

Sekarang, mari kita naik taraf sedikit. Penjurut tanpa keadaan adalah fungsi yang tidak menyimpan mana-mana keadaan antara panggilan. Mereka mudah dan efektif. Ini adalah contoh:

function kuadrat(max, current)
current = current or 0
if current >= max then
return nil
end
return current + 1, (current + 1)^2
end

for i, kuadrat_buah in square, 5 do
print(i .. " kuadrat adalah " .. kuadrat_buah)
end

Ini akan outputkan:

1 kuadrat adalah 1
2 kuadrat adalah 4
3 kuadrat adalah 9
4 kuadrat adalah 16
5 kuadrat adalah 25

Mari kita pecahkan ini:

  • Kita tentukan fungsi square yang mengambil nilai max dan current.
  • Fungsi ini mengembalikan nombor berikutnya dan kuadratnya, atau nil apabila kita selesai.
  • Dalam loop for, kita gunakan fungsi ini secara langsung sebagai penjurut.

Seperti memiliki kalkulator yang memberikan kita nombor kuadrat berikutnya setiap kali kita tekan tombol!

Penjurut Ada Keadaan

Akhirnya, mari kita bicarakan penjurut ada keadaan. Mereka lebih kompleks tetapi juga lebih kuat. Mereka mengingat keadaan mereka antara panggilan. Ini adalah contoh:

function fibonacci(n)
local count = 0
local a, b = 0, 1
return function()
if count < n then
count = count + 1
a, b = b, a + b
return count, a
end
end
end

for i, fib in fibonacci(10) do
print("Nombor Fibonacci ke-" .. i .. " adalah " .. fib)
end

Ini akan outputkan 10 nombor Fibonacci pertama:

Nombor Fibonacci ke-1 adalah 1
Nombor Fibonacci ke-2 adalah 1
Nombor Fibonacci ke-3 adalah 2
Nombor Fibonacci ke-4 adalah 3
Nombor Fibonacci ke-5 adalah 5
Nombor Fibonacci ke-6 adalah 8
Nombor Fibonacci ke-7 adalah 13
Nombor Fibonacci ke-8 adalah 21
Nombor Fibonacci ke-9 adalah 34
Nombor Fibonacci ke-10 adalah 55

Penjurut ini seperti kecil kilang nombor Fibonacci. Setiap kali kita memanggilnya, ia mengingat di mana ia terakhir berhenti dan memberikan kita nombor berikutnya dalam urutan.

Kesimpulan

Dan begitu kita mendapatnya! Kita telah menjelajahi dunia penjurut Lua, dari loop generik mudah ke penjurut ada keadaan yang kompleks. Ingat, latihan membuat sempurna. Cobalah untuk membuat penjurut anda sendiri untuk urutan atau struktur data yang berbeza.

Ini adalah tabel rujukan cepat bagi fungsi penjurut yang kita gunakan:

Fungsi Keterangan Gunakan Untuk
ipairs() Melintasi jadual seperti array Untuk senarai bernombor
pairs() Melintasi semua unsur jadual Untuk dictionary atau jadual campuran
Fungsi Custom Boleh tanpa keadaan atau ada keadaan Untuk urutan khas atau iterasi kompleks

Selamat coding, dan moga iterasimu sentiasa subur!

Credits: Image by storyset