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