Cheat Sheet Lua
Terakhir diperbarui
Hello World & menjalankan kode
Lua sangat ringkas: satu pernyataan saja sudah bisa dijalankan.
| Operasi | Sintaks |
|---|---|
| Mencetak satu baris | print("Hello, World!") |
| Mencetak beberapa nilai | print("x", 1, true) |
| Menulis tanpa baris baru | io.write("Hi") |
| Komentar | -- this is a comment |
| Komentar beberapa baris | --[[ ... ]] |
| Menggabungkan string | print("Hi " .. name) |
| Menjalankan file | lua app.lua |
| Shell interaktif | lua |
Variabel & tipe
Variabel bersifat global secara default; deklarasikan variabel lokal dengan local.
| Operasi | Sintaks |
|---|---|
| Variabel lokal | local age = 30 |
| Variabel global | count = 0 |
| Penetapan ganda | local a, b = 1, 2 |
| Delapan tipe | nil, boolean, number, string, table, function, userdata, thread |
| Nil / boolean | nil, true, false |
| Memeriksa tipe | type(x) mengembalikan "number" |
| Mengonversi ke angka | tonumber("42") |
| Mengonversi ke string | tostring(42) |
String
String tidak bisa diubah; kutip tunggal maupun ganda sama-sama bisa dipakai.
| Operasi | Sintaks |
|---|---|
| Panjang | #s atau string.len(s) |
| Menggabungkan | s1 .. s2 |
| Huruf besar / kecil | s:upper(), s:lower() |
| Substring | s:sub(1, 3) |
| Mencari substring | s:find("ell") |
| Mengganti (gsub) | s:gsub("a", "b") |
| Memformat | string.format("%05d", 42) |
| String panjang | [[ multi\nline ]] |
Table (struktur data inti)
Table adalah satu-satunya tipe terstruktur di Lua: bisa berperan sebagai array, map, dan object.
| Operasi | Sintaks |
|---|---|
| Table kosong | local t = {} |
| Gaya array (mulai dari 1) | local t = {10, 20, 30} |
| Mengakses elemen array | t[1] (elemen pertama) |
| Table gaya map | local u = {name = "Ada", age = 30} |
| Mengakses nilai map | u.name atau u["name"] |
| Mengisi nilai | t[4] = 40, u.email = "a@x.com" |
| Panjang bagian array | #t |
| Iterasi array (ipairs) | for i, v in ipairs(t) do ... end |
| Iterasi semua key (pairs) | for k, v in pairs(u) do ... end |
| Table bersarang | local m = {a = {1, 2}} |
Alur kontrol
Blok ditutup dengan end; hanya nil dan false yang bernilai falsy.
| Operasi | Sintaks |
|---|---|
| If / elseif / else | if x > 0 then ... elseif x < 0 then ... else ... end |
| Operator logika | and, or, not |
| For numerik | for i = 1, 10 do ... end |
| For dengan langkah | for i = 10, 1, -1 do ... end |
| While loop | while x < 100 do ... end |
| Repeat-until | repeat ... until done |
| Break | break |
| Operator tidak sama dengan | if a ~= b then ... end |
Fungsi
Fungsi adalah nilai first-class dan bisa mengembalikan beberapa hasil.
| Operasi | Sintaks |
|---|---|
| Mendefinisikan fungsi | function add(a, b) return a + b end |
| Fungsi lokal | local function square(x) return x * x end |
| Fungsi anonim | local f = function(x) return x * 2 end |
| Beberapa nilai kembalian | function bounds() return 1, 10 end |
| Menangkap beberapa nilai kembalian | local lo, hi = bounds() |
| Fungsi variadic | function sum(...) ... end |
| Mengumpulkan vararg | local args = {...} |
| Method (sintaks titik dua) | function obj:greet() ... end |
Library string
Fungsi umum dari library string (bisa dipanggil sebagai s:fn()).
| Fungsi | Kegunaan |
|---|---|
string.len(s) | Panjang string |
string.sub(s, i, j) | Substring dari indeks i sampai j |
string.upper(s) | Salinan dalam huruf besar |
string.rep(s, n) | Mengulang string sebanyak n kali |
string.find(s, p) | Mencari pola, mengembalikan posisi awal/akhir |
string.match(s, p) | Mengembalikan kecocokan pola pertama |
string.gsub(s, p, r) | Mengganti semua kecocokan pola |
string.format(fmt, ...) | Memformat nilai menjadi string |
Library table & math
Fungsi bantu untuk table gaya array dan angka.
| Fungsi | Kegunaan |
|---|---|
table.insert(t, v) | Menambahkan nilai di akhir |
table.insert(t, i, v) | Menyisipkan v di posisi i |
table.remove(t, i) | Menghapus dan mengembalikan elemen di i |
table.concat(t, ", ") | Menggabungkan elemen menjadi string |
table.sort(t) | Mengurutkan array di tempat |
math.floor(x) / math.ceil(x) | Membulatkan ke bawah / ke atas |
math.max(...) / math.min(...) | Argumen terbesar / terkecil |
math.random(1, 6) | Bilangan bulat acak dalam rentang |
Metatable (singkat)
Metatable memungkinkan kamu mengatur perilaku table: operator, pengindeksan, dan lainnya.
| Operasi | Sintaks |
|---|---|
| Menetapkan metatable | setmetatable(t, mt) |
| Mengambil metatable | getmetatable(t) |
| Cadangan untuk key yang tidak ada | mt.__index = defaults |
| Default lewat fungsi | mt.__index = function(t, k) ... end |
| Mengatur penjumlahan | mt.__add = function(a, b) ... end |
| Mengatur tostring | mt.__tostring = function(t) ... end |
| OOP berbasis prototype | mt.__index = ClassTable |
Sintaks Lua yang paling sering kamu pakai, dalam satu halaman. Cheat sheet Lua ini adalah referensi cepat untuk inti bahasanya: variabel dan tipe, string, alur kontrol, fungsi, dan table yang menjadi satu-satunya struktur data Lua yang fleksibel, ditambah sekilas tentang library standar dan metatable.
Semua yang ada di sini adalah Lua standar dan berjalan di interpreter bawaan. Salin yang kamu butuhkan, atau coba setiap potongan kode langsung di playground Lua, tanpa perlu instalasi.
FAQ cheat sheet Lua
Apakah cheat sheet Lua ini gratis?
Ya. Cheat sheet Lua ini sepenuhnya gratis, tanpa perlu daftar. Simpan di bookmark dan kembali kapan pun kamu perlu mencari operasi table, fungsi string, atau kata kunci alur kontrol.
Bagaimana table Lua bisa menjadi array sekaligus map?
{10, 20, 30}), table berperilaku seperti array; saat kamu memakai key string ({name = "Ada"}), table berperilaku seperti map. Kamu bahkan bisa mencampur keduanya dalam satu table. Itulah sebabnya Lua cukup punya satu tipe terstruktur: table mencakup array, dictionary, set, dan object.Kenapa Lua memakai indeks mulai dari 1?
t[1] adalah elemen pertama dan #t adalah jumlahnya. Operator panjang # dan fungsi library seperti table.insert dan ipairs semuanya mengasumsikan konvensi berbasis 1 ini, jadi mengikutinya membuat kode arraymu bekerja sesuai harapan.Bisakah saya berlatih Lua secara online?
Bisa. Buka playground Lua untuk menjalankan potongan kode apa pun dari cheat sheet ini di browsermu, tanpa perlu menginstal Lua. Kalau kamu ingin belajar terarah, kursus Lua interaktif gratis dari Coddy membawamu dari variabel dan table sampai fungsi dan metatable, langkah demi langkah.
Apakah cheat sheet ini cocok untuk pemula?
Cocok. Isinya disusun mulai dari topik yang paling umum (variabel, string, table, alur kontrol) sampai yang lanjutan (library standar dan metatable), jadi kamu bisa memakai bagian atas sejak hari pertama dan pelan-pelan menguasai sisanya.