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