10. LuaJIT 介紹

2020-07-27 09:36 更新

一、什么是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ì)

  1. lua是一個(gè)免費(fèi)、小巧、簡(jiǎn)單、強(qiáng)大、高效、輕量級(jí)的嵌入式的腳本語(yǔ)言,lua當(dāng)前的發(fā)行版本5.3.1只有276k
  2. 它是用C語(yǔ)言開(kāi)發(fā)的項(xiàng)目,所以可以在大部分的操作系統(tǒng)上運(yùn)行
  3. lua是目前速度最快的腳本語(yǔ)言,既可以提升語(yǔ)言的靈活性還可以最大限度的保留速度
  4. 其語(yǔ)法非常簡(jiǎn)單,沒(méi)有特例
  5. lua還可以作為C的API來(lái)使用

三、不足和不同

  1. lua沒(méi)有強(qiáng)大的庫(kù),所以很多功能實(shí)現(xiàn)起來(lái)沒(méi)有python、perl、ruby等腳本語(yǔ)言簡(jiǎn)潔
  2. lua的異常處理功能飽受爭(zhēng)議,雖然其提供了pcall和xpcall的異常處理函數(shù)
  3. lua原生語(yǔ)言中沒(méi)有提供對(duì)unicode編碼的支持,雖然可以通過(guò)一些折中的辦法實(shí)現(xiàn)
  4. 沒(méi)有提供在C++中應(yīng)用很廣泛的a?b:c的三元運(yùn)算符操作
  5. 沒(méi)有switch...case...語(yǔ)法,只能通過(guò)if..elseif..elseif..else..end的方式折中實(shí)現(xiàn)
  6. 在循環(huán)時(shí)沒(méi)有提供continue語(yǔ)法
  7. 沒(méi)有C++中應(yīng)用廣泛的a++和a+=1等操作
  8. lua的索引是從1開(kāi)始的,而不是我們熟悉的0(string,table)
  9. 當(dāng)你給一個(gè)元素賦值為nil時(shí)相當(dāng)于這個(gè)元素不存在
  10. lua的數(shù)值類(lèi)型只有number是沒(méi)有int,float,double等之分的
  11. lua中沒(méi)有類(lèi)的概念,其類(lèi)是通過(guò)table的形式來(lái)實(shí)現(xiàn)的
  12. lua中只有nil和false是表示假的,零在lua中是為真的
  13. 很多程序需要()標(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)用。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)