Table sebagai Object (OOP Sederhana)
Penjelasan
Lua TIDAK punya keyword `class` bawaan — object-oriented programming disimulasikan lewat table biasa yang berisi data (field) dan fungsi (method). Sintaks `objek:method()` (titik dua, bukan titik) otomatis mengirim `objek` itu sendiri sebagai parameter pertama tersembunyi bernama `self` — mirip `this` di bahasa lain.
Contoh Konsep
local Siswa = {}
function Siswa.baru(nama, nilai)
local objek = { nama = nama, nilai = nilai }
return objek
end
function Siswa.predikat(self)
if self.nilai >= 85 then return "A"
elseif self.nilai >= 70 then return "B"
else return "C" end
end
local budi = Siswa.baru("Budi", 90)
print(budi:predikat()) -- "A", tanda : otomatis kirim budi sebagai self
Praktikum
Buat table Produk dengan fungsi Produk.baru(nama, harga) dan Produk.diskon(self, persen) yang mengembalikan harga setelah dipotong diskon.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
`objek:method(a, b)` adalah gula sintaksis (syntactic sugar) untuk `objek.method(objek, a, b)` — keduanya identik, tapi sintaks titik dua jauh lebih ringkas dan lebih umum dipakai.