Lua 是動(dòng)態(tài)類型編程語言,變量沒有類型,只有值才有類型。值可以存儲(chǔ)在變量中,作為參數(shù)傳遞或者作為返回值。
盡管在 Lua 中沒有變量數(shù)據(jù)類型,但是值是有類型的。下面的列表中列出了數(shù)據(jù)類型:
| 值類型 | 描述 |
|---|---|
| nil | 用于區(qū)分值是否有數(shù)據(jù),nil 表示沒有數(shù)據(jù)。 |
| boolean | 布爾值,有真假兩個(gè)值,一般用于條件檢查。 |
| number | 數(shù)值,表示實(shí)數(shù)(雙精度浮點(diǎn)數(shù))。 |
| string | 字符串。 |
| function | 函數(shù),表示由 C 或者 Lua 寫的方法。 |
| userdata | 表示任意 C 數(shù)據(jù)。 |
| thread | 線程,表示獨(dú)立執(zhí)行的線程,它被用來實(shí)現(xiàn)協(xié)程。 |
| table | 表,表示一般的數(shù)組,符號表,集合,記錄,圖,樹等等,它還可以實(shí)現(xiàn)關(guān)聯(lián)數(shù)組。它可以存儲(chǔ)除了 nil 外的任何值。 |
Lua 中有一個(gè) type 函數(shù),它可以讓我們知道變量的類型。下面的代碼中給出了一些例子:
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)于這些類型的知識。