Ikhtisar Tipe Data Lua
Jelajahi tipe nil, boolean, number, string, table, function, dan userdata.
Ikhtisar Tipe Data Lua adalah pelajaran Lua Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Lua Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Lua Academy mencakup 4 pelajaran total.
Selamat Datang di Lua
Lua adalah bahasa skrip yang ringan, cepat, dan dapat disematkan, yang digunakan dalam mesin gim, peladen web, dan sistem tertanam. Sebelum menulis program sungguhan, Anda perlu memahami cara Lua merepresentasikan data.
Lua memiliki 8 tipe dasar: nil, boolean, number, string, table, function, userdata, dan thread. Setiap nilai dalam Lua termasuk tepat ke dalam salah satu tipe tersebut.
-- Check the type of any value with type()
print(type(42)) -- number
print(type("hello")) -- string
print(type(true)) -- boolean
print(type(nil)) -- nilnil: Ketiadaan Nilai
nil adalah cara Lua merepresentasikan ketiadaan atau tidak adanya nilai. nil adalah satu-satunya nilai dalam tipenya. Variabel yang belum pernah diberi nilai secara otomatis berisi nil.
Menetapkan nil ke variabel global secara efektif menghapusnya. Dalam tabel, menetapkan suatu kunci ke nil akan menghapus entri tersebut sepenuhnya.
-- Unassigned variables are nil
print(x) -- nil
x = 10
print(x) -- 10
x = nil
print(x) -- nil (variable is gone)boolean: true dan false
Tipe boolean memiliki tepat dua nilai: true dan false. Aturan kebenaran Lua sederhana tetapi penting: hanya nil dan false yang dianggap salah. Semua yang lain — termasuk angka 0 dan string kosong "" — dianggap benar.
Hal ini berbeda dari banyak bahasa lain yang menganggap 0 atau "" sebagai salah.
-- Lua truthiness examples
if 0 then print("0 is truthy!") end -- prints!
if "" then print("empty str is truthy!") end -- prints!
if nil then print("nil") else print("nil is falsy") end
if false then print("false") else print("false is falsy") endnumber: Bilangan Bulat dan Pecahan
Lua 5.3+ memiliki dua subtipe number: integer dan float. Bilangan bulat adalah nilai 64-bit yang presisi; bilangan pecahan menggunakan presisi ganda IEEE 754. Dalam Lua 5.1/5.2, semua angka berupa bilangan presisi ganda.
Fungsi math.type() membedakan kedua subtipe tersebut. Pembagian dengan / selalu menghasilkan bilangan pecahan; // (pembagian pembulatan ke bawah) menghasilkan bilangan bulat jika kedua operand berupa bilangan bulat.
print(type(10)) -- number
print(type(10.5)) -- number
print(math.type(10)) -- integer
print(math.type(10.5))-- float
print(10 / 3) -- 3.3333...
print(10 // 3) -- 3 (floor division)string: Teks dalam Lua
String dalam Lua adalah rangkaian byte yang tidak dapat diubah. Anda dapat membatasinya dengan tanda petik tunggal, tanda petik ganda, atau kurung siku panjang [[...]] untuk string multi-baris. String dalam kurung siku panjang mengabaikan baris baru pertama dan mempertahankan semua bagian lainnya secara harfiah.
String Lua diinternalkan, sehingga string yang identik menggunakan memori yang sama. Operator panjang # mengembalikan jumlah byte.
local s1 = 'single quotes'
local s2 = "double quotes"
local s3 = [[multi-line
long string]]
print(#s1) -- 13
print(type(s1)) -- string
print(s1 .. " works") -- concatenation with ..table: Wadah Serbaguna
Tipe table adalah satu-satunya struktur data gabungan Lua, tetapi cukup kuat untuk mengimplementasikan larik, kamus, objek, himpunan, dan banyak lagi. Tabel adalah larik asosiatif: tabel memetakan kunci ke nilai, dan kuncinya dapat berupa nilai apa pun yang bukan nil atau NaN.
Tabel dibuat dengan kurung kurawal {}. Tabel bergaya larik menggunakan kunci bilangan bulat yang dimulai dari 1.
-- Array style
local fruits = {"apple", "banana", "cherry"}
print(fruits[1]) -- apple (1-indexed!)
-- Dictionary style
local person = {name = "Alice", age = 30}
print(person.name) -- Alice
print(person["age"]) -- 30function: Nilai Kelas Utama
Fungsi dalam Lua adalah nilai kelas utama bertipe function. Fungsi dapat disimpan dalam variabel, diteruskan sebagai argumen, dan dikembalikan dari fungsi lain. Hal ini membuat Lua secara alami cocok untuk pola pemrograman fungsional.
Anda dapat mendefinisikan fungsi menggunakan kata kunci function atau menetapkan fungsi anonim ke variabel. Kedua bentuk tersebut setara.
-- Two equivalent ways to define a function
function greet(name)
return "Hello, " .. name
end
local greet2 = function(name)
return "Hello, " .. name
end
print(type(greet)) -- function
print(greet("Lua")) -- Hello, Luauserdata dan thread
userdata merepresentasikan data C arbitrer yang dikelola oleh aplikasi host. Anda tidak dapat membuat userdata dalam Lua murni — userdata berasal dari ekstensi C atau lingkungan penyematan seperti mesin gim. Hal ini memungkinkan kode C mengekspos objek ke skrip Lua.
thread merepresentasikan coroutine — alur eksekusi independen dengan stack-nya sendiri. Kita akan membahas coroutine dalam pelajaran khusus. Untuk saat ini, ketahuilah bahwa coroutine.create() mengembalikan nilai bertipe thread.
-- thread type via coroutine
local co = coroutine.create(function()
print("coroutine body")
end)
print(type(co)) -- thread
-- userdata comes from C, not creatable in pure Lua
-- type(io.stdin) == "file" is a userdata variantMenggunakan type() untuk Memeriksa Nilai
Fungsi bawaan type() selalu mengembalikan sebuah string yang menyebutkan tipe argumennya. Hal ini berguna untuk pemrograman defensif dan penelusuran kesalahan. Anda dapat membandingkan hasilnya langsung dengan string nama tipe.
Perhatikan bahwa type(nil) mengembalikan string "nil", bukan nilai nil itu sendiri. Dengan demikian, Anda dapat memeriksa dengan aman apakah sebuah variabel berisi nil tanpa menimbulkan kesalahan.
local values = {42, "hi", true, nil, {}, function() end}
-- Note: nil in table stops ipairs early
for i = 1, 3 do
print(i, type(values[i]))
end
-- 1 number
-- 2 string
-- 3 booleanPerbedaan Tipe dari Bahasa Lain
Jika Anda sebelumnya menggunakan JavaScript, Python, atau Java, beberapa aturan tipe Lua mungkin mengejutkan Anda. Tidak ada tipe bilangan bulat terpisah yang terlihat oleh type() — bilangan bulat dan pecahan sama-sama mengembalikan "number". Larik tidak memiliki tipe tersendiri — larik hanyalah tabel. Kelas tidak ada — objek adalah tabel dengan metatabel.
Memahami perbedaan ini mencegah kesalahan umum saat berpindah antarbahasa.
-- No separate array type
local arr = {1, 2, 3}
print(type(arr)) -- table (not array!)
-- No separate integer type visible
print(type(1)) -- number
print(type(1.0)) -- number
-- math.type distinguishes
print(math.type(1)) -- integer
print(math.type(1.0)) -- floatPemeriksaan Singkat
Apa yang dikembalikan type(0) dalam Lua?
Ringkasan: Ikhtisar Tipe Data Lua
Anda telah mempelajari semua 8 tipe Lua:
- nil — ketiadaan nilai; dianggap salah
- boolean — true/false; hanya nil dan false yang dianggap salah
- number — bilangan bulat atau pecahan; gunakan math.type() untuk membedakannya
- string — rangkaian byte yang tidak dapat diubah; gunakan .. untuk menggabungkannya
- table — wadah serbaguna untuk larik dan kamus
- function — nilai kelas utama yang dapat disimpan dalam variabel
- userdata — data C yang diekspos ke Lua
- thread — pengendali coroutine
Berikutnya: mendeklarasikan variabel — lingkup global dan lokal.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Ikhtisar Tipe Data Lua” gratis?
Ya — teks lengkap “Ikhtisar Tipe Data Lua” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Lua Academy, upgrade ke CoddyKit PRO. Kursus Lua Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Ikhtisar Tipe Data Lua”?
Jelajahi tipe nil, boolean, number, string, table, function, dan userdata. Kamu berlatih Lua Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Lua Academy?
Tidak diperlukan pengalaman sebelumnya. Lua Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Ikhtisar Tipe Data Lua” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Lua Academy ini?
Ya. Setiap pelajaran Lua Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Ikhtisar Tipe Data Lua
- Mendeklarasikan Variabel di Lua
- Operator Aritmetika dan Relasional
- Koersi dan Konversi Tipe