Gambaran Keseluruhan Jenis Data Lua
Terokai jenis nil, boolean, number, string, table, function dan userdata.
Gambaran Keseluruhan Jenis Data Lua ialah pelajaran Lua Academy percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Lua Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Lua Academy merangkumi sejumlah 4 pelajaran.
Selamat datang ke Lua
Lua ialah bahasa penskripan yang ringan, pantas dan boleh dibenamkan, yang digunakan dalam enjin permainan, pelayan web dan sistem terbenam. Sebelum menulis atur cara sebenar, anda perlu memahami cara Lua mewakili data.
Lua mempunyai 8 jenis asas: nil, boolean, number, string, table, function, userdata dan thread. Setiap nilai dalam Lua tergolong tepat dalam salah satu jenis ini.
-- 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 ialah cara Lua mewakili ketiadaan atau tiada nilai. Ia ialah satu-satunya nilai bagi jenisnya. Pemboleh ubah yang belum pernah diberikan nilai akan mengandungi nil secara automatik.
Memberikan nil kepada pemboleh ubah global pada hakikatnya memadamkannya. Dalam jadual, menetapkan kunci kepada nil akan membuang entri tersebut sepenuhnya.
-- Unassigned variables are nil
print(x) -- nil
x = 10
print(x) -- 10
x = nil
print(x) -- nil (variable is gone)boolean: benar dan palsu
Jenis boolean mempunyai tepat dua nilai: true dan false. Peraturan kebenaran Lua adalah mudah tetapi penting: hanya nil dan false dianggap palsu. Semua yang lain — termasuk nombor 0 dan rentetan kosong "" — dianggap benar.
Hal ini berbeza daripada banyak bahasa lain yang menganggap 0 atau "" sebagai palsu.
-- 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: Integer dan Apungan
Lua 5.3+ mempunyai dua subjenis number: integer dan float. Integer ialah nilai 64-bit yang tepat; apungan ialah IEEE 754 berketepatan ganda. Dalam Lua 5.1/5.2, semua nombor ialah nilai berketepatan ganda.
Fungsi math.type() membezakan kedua-dua subjenis tersebut. Pembahagian dengan / sentiasa mengembalikan apungan; // (pembahagian lantai) mengembalikan integer apabila kedua-dua operan ialah integer.
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
Rentetan dalam Lua ialah jujukan bait yang tidak boleh diubah. Anda boleh membatasinya dengan tanda petik tunggal, tanda petik ganda atau kurungan panjang [[...]] untuk rentetan berbilang baris. Rentetan dalam kurungan panjang mengabaikan aksara baris baharu yang pertama dan mengekalkan semua yang lain secara harfiah.
Rentetan Lua diinternkan, jadi rentetan yang sama berkongsi memori. Operator panjang # mengembalikan bilangan bait.
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: Bekas Sejagat
Jenis table ialah satu-satunya struktur data majmuk Lua, namun cukup berkuasa untuk melaksanakan tatasusunan, kamus, objek, set dan banyak lagi. Jadual ialah tatasusunan bersekutu: jadual memetakan kunci kepada nilai, dan kunci boleh berupa apa-apa nilai yang bukan nil atau NaN.
Jadual dicipta menggunakan kurungan berombak {}. Jadual gaya tatasusunan menggunakan kunci integer bermula daripada 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 Pertama
Fungsi dalam Lua ialah nilai kelas pertama berjenis function. Fungsi boleh disimpan dalam pemboleh ubah, dihantar sebagai argumen dan dikembalikan daripada fungsi lain. Hal ini menjadikan Lua sememangnya sesuai untuk corak pengaturcaraan berfungsi.
Anda boleh mentakrifkan fungsi menggunakan kata kunci function atau memberikan fungsi tanpa nama kepada pemboleh ubah. Kedua-dua bentuk ini adalah 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 mewakili data C arbitrari yang diuruskan oleh aplikasi hos. Anda tidak boleh mencipta userdata dalam Lua tulen — userdata datang daripada sambungan C atau persekitaran pembenaman seperti enjin permainan. Ia membolehkan kod C mendedahkan objek kepada skrip Lua.
thread mewakili coroutine — utas pelaksanaan bebas dengan tindanan tersendiri. Kita akan meneroka coroutine dalam pelajaran khusus. Buat masa ini, ketahui bahawa coroutine.create() mengembalikan nilai berjenis 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 terbina dalam type() sentiasa mengembalikan rentetan yang menamakan jenis argumennya. Hal ini berguna untuk pengaturcaraan defensif dan penyahpepijatan. Anda boleh membandingkan hasilnya secara langsung dengan rentetan nama jenis.
Perhatikan bahawa type(nil) mengembalikan rentetan "nil", bukannya nilai nil itu sendiri. Dengan ini, anda boleh menyemak dengan selamat sama ada pemboleh ubah mengandungi nil tanpa ralat.
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 booleanPerbezaan Jenis daripada Bahasa Lain
Jika anda datang daripada JavaScript, Python atau Java, beberapa peraturan jenis Lua mungkin mengejutkan anda. Tiada jenis integer berasingan yang kelihatan kepada type() — integer dan apungan kedua-duanya mengembalikan "number". Tatasusunan tidak mempunyai jenis tersendiri — tatasusunan hanyalah jadual. Kelas tidak wujud — objek ialah jadual dengan jadual metamereka.
Memahami perbezaan ini membantu mengelakkan pepijat biasa apabila beralih antara bahasa.
-- 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)) -- floatSemakan Pantas
Apakah yang dikembalikan oleh type(0) dalam Lua?
Ulang Kaji: Gambaran Keseluruhan Jenis Data Lua
Anda telah mempelajari kesemua 8 jenis Lua:
- nil — ketiadaan nilai; dianggap palsu
- boolean — benar/palsu; hanya nil dan false dianggap palsu
- number — integer atau apungan; gunakan math.type() untuk membezakannya
- string — jujukan bait yang tidak boleh diubah; gunakan .. untuk mencantumkan
- table — bekas sejagat untuk tatasusunan dan kamus
- function — nilai kelas pertama yang boleh disimpan dalam pemboleh ubah
- userdata — data C yang didedahkan kepada Lua
- thread — pemegang coroutine
Seterusnya: mengisytiharkan pemboleh ubah — skop global berbanding setempat.
Pelajari Lua dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 40
- Pelajaran
- 159
Soalan Lazim
Adakah pelajaran “Gambaran Keseluruhan Jenis Data Lua” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Lua Academy, termasuk “Gambaran Keseluruhan Jenis Data Lua”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Lua Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Gambaran Keseluruhan Jenis Data Lua”?
Terokai jenis nil, boolean, number, string, table, function dan userdata. Anda berlatih Lua Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Lua Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Lua Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.
Berapa lamakah pelajaran “Gambaran Keseluruhan Jenis Data Lua” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Lua Academy ini?
Ya. Setiap pelajaran Lua Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Gambaran Keseluruhan Jenis Data Lua
- Mengisytiharkan Pemboleh Ubah dalam Lua
- Operator Aritmetik dan Perbandingan
- Paksaan dan Penukaran Jenis