主頁(yè) > 知識(shí)庫(kù) > Lua腳本語(yǔ)言概述

Lua腳本語(yǔ)言概述

熱門(mén)標(biāo)簽:武漢外呼防封系統(tǒng)多少錢(qián) 清朝地圖標(biāo)注哈爾濱 地圖標(biāo)注大廈 冀州市地圖標(biāo)注 新岸線(xiàn)智能電銷(xiāo)機(jī)器人 漳州智云呼電話(huà)機(jī)器人 怎么去除地圖標(biāo)注 個(gè)人怎么在地圖標(biāo)注需要的店鋪 百度地圖標(biāo)注早餐區(qū)域

Lua是什么

Lua是一中嵌入式的腳本語(yǔ)言。

Lua語(yǔ)言可以獨(dú)立進(jìn)行編程,但這不是其主要的使用方式。Lua雖然有動(dòng)態(tài)、靈活的語(yǔ)法提供強(qiáng)大的功能,但并不像 Java、Python 等一樣有一個(gè)完善的庫(kù)(但仍存在一定數(shù)量的第三方庫(kù)),這不是缺陷,而是和其定位有關(guān)。

Lua最典型的用法,是作為一個(gè)庫(kù),嵌入 到其他大型語(yǔ)言(稱(chēng)之為宿主語(yǔ)言 )的應(yīng)用程序之中,為應(yīng)用程序提供參數(shù)配置或邏輯描述等功能,帶來(lái)前所未有的靈活性。

Lua常見(jiàn)的宿主語(yǔ)言有:C/C++,Java,.NET,甚至腳本語(yǔ)言如PHP,Ruby等。Lua與宿主語(yǔ)言的交互方式:宿主語(yǔ)言通過(guò)虛擬機(jī)調(diào)用Lua腳本中的變量和函數(shù);Lua調(diào)用宿主語(yǔ)言中的變量和函數(shù)。

Lua語(yǔ)言的特性

-----就是8大數(shù)據(jù)類(lèi)型

1.動(dòng)態(tài)語(yǔ)言,可控的垃圾收集,支持?jǐn)?shù)值、字符串、布爾、nil簡(jiǎn)單類(lèi)型的基本運(yùn)算
2.以哈希表為基礎(chǔ),以原型的方式,構(gòu)建復(fù)雜的數(shù)據(jù)結(jié)構(gòu),和支持面向?qū)ο?br /> 3.支持宿主語(yǔ)言中自定義的數(shù)據(jù)類(lèi)型的操作
4.將函數(shù)作為普通數(shù)據(jù)類(lèi)型,支持詞法定界、尾遞歸
5.通過(guò)協(xié)程的方式支持并發(fā)程序設(shè)計(jì)

Lua的使用范圍

lua除了編寫(xiě)魔獸世界的插件,還能做什么?可以用lua來(lái)寫(xiě)一些常用的程序,比如操作excel,比如定制一些查找。還可以把lua作為一種配置方式(類(lèi)似ini文件或者cfg文件),因?yàn)?lua的表,可以達(dá)到非常復(fù)雜的配置功能,另外lua的解析速度要比xml快多了。當(dāng)然lua主要用處還是作為游戲的腳本支持語(yǔ)言。

Lua的基本內(nèi)容

八種數(shù)據(jù)類(lèi)型:nil,booleans,numbers,strings,table(表),functions(函數(shù)),userdata,threads(協(xié)程)

1.數(shù)值(number):內(nèi)部以double表示=====》算術(shù)運(yùn)算符(+,-,*,/,^(冪),%),關(guān)系運(yùn)算符(>,,=,>=,==,~=)====》數(shù)學(xué)庫(kù)
2.字符串(string):總是以零結(jié)尾,但可以包含任意字符(包括零),因此并不等價(jià)于C字符串,而是超集===》連接運(yùn)算符====》string庫(kù)
3.布爾(boolean):只有true,false兩個(gè)值------>邏輯運(yùn)算符(and,or,not)。在控制結(jié)構(gòu)的條件中除了false和nil為假,其他值都為真。所以L(fǎng)ua認(rèn)為0和空串都是真。
4.函數(shù)(function):Lua的關(guān)鍵概念之一。不簡(jiǎn)單等同于C的函數(shù)或函數(shù)指針。
5.表(table):異構(gòu)的Hash表。Lua的關(guān)鍵概念之一。
6.userdata:用戶(hù)(非腳本用戶(hù))定義的C數(shù)據(jù)結(jié)構(gòu)。腳本用戶(hù)只能使用它,不能定義。
7.線(xiàn)程(thread):Lua協(xié)作線(xiàn)程(coroutine),與一般操作系統(tǒng)的搶占式線(xiàn)程不一樣。
8.nil:代表什么也沒(méi)有,可以與C的NULL作類(lèi)比,但它不是空指針。

復(fù)制代碼 代碼如下:

print(type("Hello world")) --> string
print(type(10.4*3)) --> number
print(type(type)) --> function
print(type(true)) --> boolean
print(type(nil)) --> nil
--變量沒(méi)有預(yù)定義的類(lèi)型,每一個(gè)變量都可能包含任一種類(lèi)型的值。
print(type(a)) --> nil ('a' is not initialized)
a = 10
print(type(a)) --> number
a = "a string!!"
print(type(a)) --> string
a = print -- yes, this is valid!
a(type(a)) --> function

表達(dá)式:算術(shù)、關(guān)系、邏輯、連接運(yùn)算符
流程控制:ifthenelse,while,repeat,for,
核心:函數(shù)(函數(shù)閉包),表(元表),線(xiàn)程(協(xié)作線(xiàn)程)
數(shù)據(jù)結(jié)構(gòu):數(shù)組,矩陣和多維數(shù)組,列表,隊(duì)列和雙向隊(duì)列,集合和包,字符串緩沖。
標(biāo)準(zhǔn)庫(kù):數(shù)學(xué)庫(kù),string庫(kù),IO庫(kù),操作系統(tǒng)庫(kù),Debug庫(kù)

Lua虛擬機(jī)

Lua虛擬機(jī)內(nèi)部有一個(gè)堆棧,Lua API提供了對(duì)其的操作,不僅有出入棧操作,還可以以數(shù)組的形式,通過(guò)索引值隨機(jī)讀寫(xiě)棧元素,這是雙方交換數(shù)據(jù)的主要方式。

用宿主語(yǔ)言可以編寫(xiě)供Lua調(diào)用的函數(shù),宿主語(yǔ)言需要遵守調(diào)用約定,從棧中取得參數(shù),最后也將結(jié)果入棧。將宿主函數(shù)通過(guò)lua_register注冊(cè)入Lua虛擬機(jī)(這一過(guò)程實(shí)質(zhì)為向Lua語(yǔ)言添加全局變量),就可以被Lua語(yǔ)言所調(diào)用。

宿主語(yǔ)言也可以將Lua函數(shù)壓棧,再將參數(shù)依次壓棧,最后使用lua_call,完成對(duì)Lua函數(shù)的調(diào)用。

若Lua虛擬機(jī)堆棧里有N個(gè)元素,則可以用 1 ~ N 從棧底向上索引,也可以用 -1 ~ -N 從棧頂向下索引,一般后者更加常用。

堆棧的每個(gè)元素可以為任意復(fù)雜的Lua數(shù)據(jù)類(lèi)型,堆棧中沒(méi)有元素的空位,隱含為包含一個(gè)“空”類(lèi)型數(shù)據(jù)。

您可能感興趣的文章:
  • Lua腳本語(yǔ)言簡(jiǎn)介
  • Lua腳本語(yǔ)言簡(jiǎn)明入門(mén)教程

標(biāo)簽:臺(tái)灣 天門(mén) 德宏 儋州 天門(mén) 宣城 金昌 濰坊

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Lua腳本語(yǔ)言概述》,本文關(guān)鍵詞  Lua,腳本,語(yǔ)言,概述,Lua,腳本,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Lua腳本語(yǔ)言概述》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于Lua腳本語(yǔ)言概述的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章