Lua變量類型簡明總結(jié)
在上一節(jié)中說到了Lua的安裝與變量,這節(jié)說說Lua變量的類型。Lua在使用中不需要預(yù)先定義變量的類型。Lua中基本的類型有:nil、boolean、number、string、userdata、function、thread、table??梢允褂胻ype函數(shù)來判斷變量的類型。
1. nil
nil是一個(gè)特殊的類型,用來表示該變量還沒有被賦值,如果一個(gè)變量賦值為nil,可以刪除這個(gè)變量。
2. boolean
boolean類型的變量只有兩個(gè)值:true和false。在條件表達(dá)式中非常有用的。在控制結(jié)構(gòu)條件中只有false和nil為假,其他值都是真的。因此Lua認(rèn)為0和空字符串都為真。
3. number
number在Lua中是雙精度浮點(diǎn)數(shù)。沒有整數(shù)類型。
4. string
在Lua中字符串是不可修改的。string和其他對象一樣,Lua自動(dòng)進(jìn)行內(nèi)存的分配和釋放。
Lua字符串可以小到一個(gè)字符,也可以包含百萬字符以上。
可以使用單引號或者雙引號表示字符串,還可以使用[[...]]來表示字符串。
對于字符串中含有引號的字符可以使用\來進(jìn)行轉(zhuǎn)義。
Lua特殊字符串如下:
\a 響鈴 \v 垂直制表符 \b 退格 \\ 反斜杠
\f 換頁符 \" 雙引號 \n 換行符 \' 單引號
\r 換行符 \[ 左方括號 \t 制表符 \] 右方括號
..在Lua中是字符串連接符。當(dāng)在一個(gè)數(shù)字后面寫..時(shí),必須加上空格,否則出錯(cuò)。
Lua會(huì)根據(jù)上下文在合理的情況下,對數(shù)字和字符串之間進(jìn)行轉(zhuǎn)換。如果需要顯示的將string轉(zhuǎn)成數(shù)字可以使用函數(shù)tonumber(),反之,可以使用tostring()將數(shù)字轉(zhuǎn)成字符串。
5. function
函數(shù)可以存儲(chǔ)在變量中,可以作為函數(shù)的參數(shù),也可以作為函數(shù)的返回值。
6. table
table在Lua中是最強(qiáng)大最重要也是最容易造成困惑的數(shù)據(jù)類型。
table 類似于 python 中的字典。table 只能通過構(gòu)造式來創(chuàng)建。
> tab = { web = "chabaoo.cn", QQ = 39514058, 20, a = 30, b = 40, 50 }
> tab2 = { 'web' = "chabaoo.cn", QQ = 39514058, 20, a = 30, b = 40, 50 }
stdin:1: '}' expected near '='
> print(tab["web"])
chabaoo.cn
> print(tab[web])
nil
> print(tab[1])
20
> print(tab[2])
50
> print(tab[3])
nil
注釋:
6.1 table 中的每項(xiàng)要求是 key = value 的形式。 省略key時(shí),會(huì)自動(dòng)以1開始編號,并跳過設(shè)置過的key。
6.2 key 只能是字符串, 這里的 web, QQ, a, b 都是字符串,但是不能加上引號, 否則出錯(cuò)。
6.3 通過 key 來訪問 table 的值,這時(shí)候,必須加上引號。