Jumat, 29 April 2016

Pengenalan Table Pada Lua Programming

Pada artikel ini saya akan memperkenalkan object table pada bahasa pemrograman Lua. Bagi Anda yang sudah familiar dengan pemrograman, tentu array merupakan hal yang tidak asing lagi. Demikian juga dengan Lua, bahasa pemrograman ini juga memiliki kemampuan menyimpan array yang diistilahkan dengan object table.
Table pada Lua sebenarnya bukan merupakan value ataupun variable, tetapi table merupakan object. Table juga tidak memiliki panjang yang telah ditentukan, artinya Anda dapat menambahkan elemen sebanyak mungkin dan panjang table akan otomatis bertambah secara dinamis. Langsung saja kita lihat bersama contoh implementasi table.
Cara deklarasi table di Lua:
Anda dapat mendeklarasikan object table dengan mudah di Lua seperti halnya membuat variable.
local tabelBuah = {}
--atau
tabelBuah = {}
Kode di atas mendeklarasikan table dengan nama "namaTabelSaya." Namun table tersebut belum memiliki elemen. Langkah berikutnya adalah mengisi table dengan values yang Anda kehendaki.


Cara mengisi table:
Untuk mengisi table pada Lua, cukup menggunakan kode  

1
table.insert(namaTable, values)

Contoh untuk mengisi tabelBuah yang telah Anda buat adalah:

table.insert(tabelBuah, "Mangga")
table.insert(tabelBuah, "Jeruk")
table.insert(tabelBuah, "Apel")
table.insert(tabelBuah, "Nanas")
Mudah sekali bukan? Namun table pada Lua memiliki kemampuan yang jauh lebih fleksibel dibandingkan array pada bahasa pemrograman lainnya. Sebagai contoh, Anda dapat mengisi element table menggunakan table. Sepertinya terdengar membingungkan, tetapi silakan lihat kode di bawah ini untuk lebih jelasnya.
local tabelBuahDanWarna = {}
 
table.insert(tabelBuahDanWarna, {nama="Mangga",warna="Hijau"})
table.insert(tabelBuahDanWarna, {nama="Jeruk",warna="Jingga"})
table.insert(tabelBuahDanWarna, {nama="Aple",warna="Merah"})
table.insert(tabelBuahDanWarna, {nama="Nanas",warna="Kuning"})

Kode di atas mendeklarasikan table baru dengan nama "tabelBuahDanWarna," masing-masing elemen berisikan table anonymous seperti {nama="Mangga",warna="Hijau"}. Perlu diketahui, Lua mendukung penggunaan object-object anonymous, termasuk function dan table anonymous. Dengan contoh di atas, setiap element "tabelBuahDanWarna" memiliki values berupa tabel berisi nama dan warna. Anda bebas menentukan identifier bagi setiap element table, pada contoh ini digunakan "nama" dan "warna."
Cara memanggil values table:
Setelah membuat table, tentu saja Anda ingin menggunakannya. Ada beberapa cara untuk memanggil element sebuah table, namun pada umumnya Anda juga ingin tahu berapa banyak element yang tersimpan di dalam table tersebut. Untuk mengetahui panjang table atau jumlah element, cukup gunakan kode:
1
#tabelBuah
Contoh di atas akan menghasilkan panjang table bernama tabelBuah. Apabila hasilnya ingin dicetak bisa menggunakan print(#tabelBuah) 
Lalu untuk memanggil suatu element pada table, Anda bisa menggunakan cara-cara berikut:
1
2
3
4
5
6
7
8
9
10
11
12
--Variabel a digunakan untuk menampung element table yang Anda kehendaki
a = tabelBuah[2]
--Variable x berisi integer
x = 3
a = tabelBuah[x]
--Memanggil element terakhir suatu table
a = tabelBuah[#tabelBuah]
 
 
--Menggunakan atribut/member suatu tabel
a = tabelBuahDanWarna[1].nama
b = tabelBuahDanWarna[1].warna
Setelah memahami kode di atas, baru tampak fleksibilitas dari table Lua. Anda dapat memanipulasi table dengan mudah, menggunakan posisi maupun atribut/nama member (tabelBuahDanWarna).
Tidak berhenti sampai di situ, Anda juga bisa melakukan iterasi terhadap element-element suatu table, contohnya:
for i,buah in ipairs(tabelBuah) do
  print(i..". "..buah)
end
print("\n")
   
for i,buahDanWarna in ipairs(tabelBuahDanWarna) do
  print(i..". Nama: "..buahDanWarna.nama.."\tWarna: "..buahDanWarna.warna)
end
Code di atas akan mencetak setiap element yang dimiliki oleh tabelBuah dan tabelWarnaDanBuah. Model iterasi ini mirip dengan foreach pada bahasa pemrograman C#, hanya saja pada Lua, Anda mendapatkan nilai dari index iterator yang disimpan dalam variable i.
Source code lengkap tutorial :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
local tabelBuah = {}
local tabelBuahDanWarna = {}
 
local initializeTable = function()
  -- Isi tabelBuah
  table.insert(tabelBuah, "Mangga")
  table.insert(tabelBuah, "Jeruk")
  table.insert(tabelBuah, "Apel")
  table.insert(tabelBuah, "Nanas")
   
  --Isi tabelBuahDanWarna
  table.insert(tabelBuahDanWarna, {nama="Mangga",warna="Hijau"})
  table.insert(tabelBuahDanWarna, {nama="Jeruk",warna="Jingga"})
  table.insert(tabelBuahDanWarna, {nama="Aple",warna="Merah"})
  table.insert(tabelBuahDanWarna, {nama="Nanas",warna="Kuning"})
end
 
main = function ()
  initializeTable()
   
  for i,buah in ipairs(tabelBuah) do
    print(i..". "..buah)
  end
   
  print("\n")
   
  for i,buahDanWarna in ipairs(tabelBuahDanWarna) do
    print(i..". Nama: "..buahDanWarna.nama.."\tWarna: "..buahDanWarna.warna)
  end
 
end
 
main() 

Tidak ada komentar:

Posting Komentar