Lua yang dalam bahasa indonesia berarti bulan adalah bahasa pemograman dinamis yang berbasis skrip.
Sebagai bahasa skrip, Lua memiliki API dalam bahasa C yang relatif lebih sederhana dibandingkan bahasa skrip lainnya.
Untuk permulaan tentu saja kita harus mengenal suasana kerja Lua, mari kita mulai dengan contoh klasik,
Tapi sebelum itu download terlebih dahulu Lua Binaries (dalam contoh ini untuk windows)
win32 binwin32 dll and includes(MingW4 Compatoble)
ekstrak semua file lalu open lua5.1.exe, akan muncul command, mari kita tampilkan hello word...
untuk menampilkan text tidak jauh berbeda dengan pemograman lainnya yaitu menggunakan print
print("hello world") atau dapat menggunakan io.write("hello world \n")
berikut contoh lain eksekusi skrip lua :
buka cmd lalu arahkan pada direktori lua, kemudian load file lua yang berformat ".lua" seperti berikut
ini akan mengeksekusi file prima.lua yang berisi skrip :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
function gen (n)
return coroutine.wrap(function ()
for i=2,n do coroutine.yield(i) end
end)
end
function filter (p, g)
return coroutine.wrap(function ()
for n in g do
if n%p ~= 0 then coroutine.yield(n) end
end
end)
end
N=N or 10
x = gen(N)
while 1 do
local n = x()
if n == nil then break end
print(n)
x = filter(n, x)
end
|
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.
1
2
3
|
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:
1
2
3
4
|
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.
1
2
3
4
5
6
|
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:
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:
1
2
3
4
5
6
7
8
|
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()
|
|
No comments:
Post a Comment