Lua 是動(dòng)態(tài)類(lèi)型編程語(yǔ)言,變量沒(méi)有類(lèi)型,只有值才有類(lèi)型。值可以存儲(chǔ)在變量中,作為參數(shù)傳遞或者作為返回值。
盡管在 Lua 中沒(méi)有變量數(shù)據(jù)類(lèi)型,但是值是有類(lèi)型的。下面的列表中列出了數(shù)據(jù)類(lèi)型:
值類(lèi)型 | 描述 |
---|---|
nil | 用于區(qū)分值是否有數(shù)據(jù),nil 表示沒(méi)有數(shù)據(jù)。 |
boolean | 布爾值,有真假兩個(gè)值,一般用于條件檢查。 |
number | 數(shù)值,表示實(shí)數(shù)(雙精度浮點(diǎn)數(shù))。 |
string | 字符串。 |
function | 函數(shù),表示由 C 或者 Lua 寫(xiě)的方法。 |
userdata | 表示任意 C 數(shù)據(jù)。 |
thread | 線(xiàn)程,表示獨(dú)立執(zhí)行的線(xiàn)程,它被用來(lái)實(shí)現(xiàn)協(xié)程。 |
table | 表,表示一般的數(shù)組,符號(hào)表,集合,記錄,圖,樹(shù)等等,它還可以實(shí)現(xiàn)關(guān)聯(lián)數(shù)組。它可以存儲(chǔ)除了 nil 外的任何值。 |
Lua 中有一個(gè) type 函數(shù),它可以讓我們知道變量的類(lèi)型。下面的代碼中給出了一些例子:
print(type("What is my type")) --> string
t=10
print(type(5.8*t)) --> number
print(type(true)) --> boolean
print(type(print)) --> function
print(type(type)) --> function
print(type(nil)) --> nil
print(type(type(ABC))) --> string
在 Linux 系統(tǒng)中運(yùn)行上面的代碼可以得到如下的結(jié)果:
string
number
function
function
boolean
nil
string
默認(rèn)情況下,在被初始化或賦值前,所有變量都指向 nil。 Lua 中空字符串和零在條件檢查時(shí),都被當(dāng)作真。所以你在使用布爾運(yùn)算的時(shí)候要特別注意。在下一章中,我們會(huì)了解到更多關(guān)于這些類(lèi)型的知識(shí)。