一、什么是lua&luaJit
lua(www.lua.org)其實(shí)就是為了嵌入其它應(yīng)用程序而開(kāi)發(fā)的一個(gè)腳本語(yǔ)言,luajit(www.luajit.org)是lua的一個(gè)Just-In-Time也就是運(yùn)行時(shí)編譯器,也可以說(shuō)是lua的一個(gè)高效版。
二、優(yōu)勢(shì)
- lua是一個(gè)免費(fèi)、小巧、簡(jiǎn)單、強(qiáng)大、高效、輕量級(jí)的嵌入式的腳本語(yǔ)言,lua當(dāng)前的發(fā)行版本5.3.1只有276k
- 它是用C語(yǔ)言開(kāi)發(fā)的項(xiàng)目,所以可以在大部分的操作系統(tǒng)上運(yùn)行
- lua是目前速度最快的腳本語(yǔ)言,既可以提升語(yǔ)言的靈活性還可以最大限度的保留速度
- 其語(yǔ)法非常簡(jiǎn)單,沒(méi)有特例
- lua還可以作為C的API來(lái)使用
三、不足和不同
- lua沒(méi)有強(qiáng)大的庫(kù),所以很多功能實(shí)現(xiàn)起來(lái)沒(méi)有python、perl、ruby等腳本語(yǔ)言簡(jiǎn)潔
- lua的異常處理功能飽受爭(zhēng)議,雖然其提供了pcall和xpcall的異常處理函數(shù)
- lua原生語(yǔ)言中沒(méi)有提供對(duì)unicode編碼的支持,雖然可以通過(guò)一些折中的辦法實(shí)現(xiàn)
- 沒(méi)有提供在C++中應(yīng)用很廣泛的a?b:c的三元運(yùn)算符操作
- 沒(méi)有switch...case...語(yǔ)法,只能通過(guò)if..elseif..elseif..else..end的方式折中實(shí)現(xiàn)
- 在循環(huán)時(shí)沒(méi)有提供continue語(yǔ)法
- 沒(méi)有C++中應(yīng)用廣泛的a++和a+=1等操作
- lua的索引是從1開(kāi)始的,而不是我們熟悉的0(string,table)
- 當(dāng)你給一個(gè)元素賦值為nil時(shí)相當(dāng)于這個(gè)元素不存在
- lua的數(shù)值類(lèi)型只有number是沒(méi)有int,float,double等之分的
- lua中沒(méi)有類(lèi)的概念,其類(lèi)是通過(guò)table的形式來(lái)實(shí)現(xiàn)的
- lua中只有nil和false是表示假的,零在lua中是為真的
- 很多程序需要()標(biāo)示才能運(yùn)行,比如a={["b"]=5},print(a.b)是可運(yùn)行的,但是 {["b"]=5}.b就會(huì)報(bào)錯(cuò),需要({["b"]=5}).b才可以
四、綜述
綜上,lua是一個(gè)簡(jiǎn)單,高效所以在游戲邏輯開(kāi)發(fā)和服務(wù)器開(kāi)發(fā)中(ngx_lua)得到廣泛的應(yīng)用。
更多建議: