Pergi ke kandungan

Pengaturcaraan Lua/Jadual

Daripada Wikibuku


Jadual merupakan struktur data tunggal dalam Lua, akan tetapi jadual lebih fleksibel daripada struktur data yang terdapat dalam bahasa-bahasa lain. Jadual juga disebut kamus (oleh sebab jadual memadankan nilai dengan indeks, sama seperti padanan istilah dengan takrif dalam kamus biasa), tatasusunan bersekutu (associative array) (oleh sebab jadual menyekutukan nilai pada indeks, dan dengan cara itu mewujudkan tatasusunan nilai yang bersekutu dengan indeks), jadual cincangan, jadual simbol, peta cincangan dan peta. Jadual dicipta dengan menggunakan pembina jadual, yang ditakrifkan sebagai dua tanda kurung panah ('{ }'), yang boleh, ataupun tidak, mengandungi nilai yang dipisahkan dengan tanda koma ataupun koma bernoktah.

Contoh berikut menunjukkan tatasusunan (array) dan menunjukkan bagaimana panjang tatasusunan dapat diperoleh.

local array = {5, "teks", {"teks tambahan", 463, "lagi teks tambahan"}, "lagi teks"}
print(#array) --> 4  --  operator # buat rentetan juga boleh digunakan dengan tatasusunan, 
                     --  dan akan memulangkan bilangan nilai dalam tatasusunan

-- Contoh ini menunjukkan bagaimana jadual dapat bersarang dalam jadual lain. 
-- Jadual boleh mengandungi jadual lain oleh sebab jadual itu sendiri merupakan nilai.
-- Tatasusunan jadual disebut tatsusunan multidimensi.

Jadual boleh mengandungi semua jenis nilai melainkan nil. Ini logik kerana nil mewakili ketiadaan nilai dan memasukkan "ketiadaan nilai" ke dalam jadual tidak ada makna. Nilai-nilai dalam jadual dipisahkan dengan tanda koma ataupun koma titik, dan boleh merangkumi banyak baris. Biasanya koma digunakan untuk pembinaan jadual satu baris dan tanda koma titik untuk jadual banyak baris, akan tetapi ini tidak wajib.

local array = {
	"teks";
	{
		"lagi teks, dalam jadual bersarang";
		1432
	};
	true -- boolean juga boleh berada dalam jadual
}

Jadual terdiri daripada medan, yakni sepasang nilai yang satu daripadanya merupakan indeks (juga dipanggil kunci) yang satu lagi merupakan nilai sepadan untuk indeks. Dalam tatasusunan, indeks sentiasa dalam bentuk nombor. Dalam tatasusunan bersekutu, tatasusunan boleh diindeks bukan sahaja dengan nombor, akan tetapi juga dengan rentetan dan apa jua nilai melainkan nil. Seperti yang dinyatakan dalam perenggan pertama, contoh-contoh tatasusunan bersekutu termasuk kamus, set, baris gilir, jadual simbol, dan sebagainya.

local kamus = {
	"teks";
	teks = "lagi teks";
	654;
	[8] = {}; -- jadual kosong
	func = function() print("jadual juga boleh mengandungi fungsi!") end;
	["1213"] = 1213
}

Seperti yang ditunjukkan dalam contoh di atas, nilai boleh ditambah pada kamus sama seperti tatasusunan dengan hanya meletakkan nilai (dalam kes ini indeksnya ialah nombor), dengan sebuah pengenal pasti dan tanda sama ('=') sebagai prefiks nilai (dalam kes ini indeks ialah rentetan yang sepadan dengan pengenal pasti) ataupun dengan nilai yang dikurung dan tanda sama yang menjadi prefiks nilai (dan dalam kes ini indeks ialah nilai yang terkandung dalam tanda kurungan).

Kita dapat mengakses nilai dalam jadual dengan meletakkan indeks sesuatu nilai dalam tanda kurungan siku seperti dalam contoh di bawah:

local kamus  = {nombor = 6}
print(kamus["nombor"]) --> 6

Jika indeks itu dalam bentuk pengenal pasti Lua yang sah, ia boleh dicapai tanpa tanda kurungan siku, yakni dengan meletak prefiks titik:

local kamus = {["nombor"] = 6}
print(kamus.nombor) --> 6

Pautan luar

[sunting]
  • Tables Penerangan lanjut tentang Jadual dalam buku Programming in Lua (PIL) (Bahasa Inggeris)