Lua是動(dòng)態(tài)類型語言,變量不需要類型聲明荸型,每一個(gè)變量都可能包含任一種類型值繁涂。一般情況下拱她,同一變量表示不同類型的值會(huì)造成混亂,最好不要這么使用扔罪。
Lua中有8個(gè)基本類型:nil秉沼、boolean、number矿酵、string唬复、userdata、function全肮、thread和table敞咧。
函數(shù)type可以用string類型返回變量的類型值。
1 nil
- 只包含一個(gè)值倔矾,nil妄均;
- 任何類型在未賦值之前都是nil柱锹;
- 全局變量賦值為nil時(shí)哪自,刪除該變量。
2 boolean
- 有兩個(gè)值禁熏,true和false壤巷;
- false和nil表示假,其余情況都為真瞧毙。
3 number
- 表示實(shí)數(shù)胧华,包括浮點(diǎn)數(shù)和整形數(shù)
4 string
- 表示一個(gè)字符序列,可以包含任意長度(可以為空也可以是整本書)任意字符(包括c/c++中的終止字符0)宙彪;
- 標(biāo)識(shí)可以是單引號(hào)矩动,也可以是雙引號(hào)(建議統(tǒng)一使用一種);
- 字符串連接操作符為".."(例:"Hello ".."World")释漆;
- 使用"#"可獲得字符串長度(例:#(Hello World));
- 可以在字符串中使用\ddd(ddd為三位十進(jìn)制數(shù)字)方式表示字母悲没,例如下列兩個(gè)字符串相同;
"alo\n123\""
'\97lo\10\04923"'
- 可以使用 [[...]] 表示字符串男图;
- 可以使用轉(zhuǎn)義字符:
\a bell
\b back space -- 后退
\f form feed -- 換頁
\n newline -- 換行
\r carriage return -- 回車
\t horizontal tab -- 制表
\v vertical tab
\\ backslash -- "\"
\" double quote -- 雙引號(hào)
\' single quote -- 單引號(hào)
\[ left square bracket -- 左中括號(hào)
\] right square bracket -- 右中括號(hào)
- 運(yùn)行時(shí)示姿,Lua會(huì)自動(dòng)在string和numbers之間自動(dòng)進(jìn)行類型轉(zhuǎn)換甜橱。當(dāng)一個(gè)字符串使用算術(shù)操作符時(shí),string就會(huì)被轉(zhuǎn)成數(shù)字栈戳;當(dāng)Lua期望一個(gè)string而碰到數(shù)字時(shí)岂傲,會(huì)將數(shù)字轉(zhuǎn)成string;
- 顯式的將string轉(zhuǎn)成數(shù)字使用函數(shù)tonumber()子檀,如果string不是正確的數(shù)字镊掖,該函數(shù)將返回nil;
- 顯示的將number轉(zhuǎn)成string褂痰,使用函數(shù)tostring()堰乔,這種轉(zhuǎn)換一直有效。
5 userdata
- userdata可以將C數(shù)據(jù)存放在Lua變量中脐恩;
- userdata在Lua中除了賦值和相等比較以外镐侯,沒有預(yù)定義的操作;
- userdata用來描述應(yīng)用程序或者使用C實(shí)現(xiàn)的庫創(chuàng)建的新類型驶冒。(后續(xù)部分會(huì)詳細(xì)介紹)
6 function
- 函數(shù)是第一類值苟翻。它可以存儲(chǔ)在變量中;可以作為函數(shù)的參數(shù)骗污;可以作為函數(shù)的返回值崇猫;
- Lua可以調(diào)用lua或C實(shí)現(xiàn)的函數(shù),其中Lua所有的標(biāo)準(zhǔn)庫(string庫需忿、table庫诅炉、I/O庫、OS庫屋厘、算術(shù)庫涕烧、debug庫)都是用C實(shí)現(xiàn)的。
7 thread
線程汗洒,后續(xù)部分會(huì)詳細(xì)介紹议纯。
8 table
表,后續(xù)部分會(huì)詳細(xì)介紹溢谤。