最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Lua腳本語言概述

 更新時(shí)間:2014年09月28日 09:23:10   投稿:junjie  
這篇文章主要介紹了Lua腳本語言概述,本文講解了Lua是什么、Lua語言的特性、Lua的使用范圍、Lua的基本內(nèi)容、Lua虛擬機(jī)等內(nèi)容,需要的朋友可以參考下

Lua是什么

Lua是一中嵌入式的腳本語言。

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

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

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

Lua語言的特性

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

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

Lua的使用范圍

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

Lua的基本內(nèi)容

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

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

print(type("Hello world")) --> string
print(type(10.4*3)) --> number
print(type(type)) --> function
print(type(true)) --> boolean
print(type(nil)) --> nil
--變量沒有預(yù)定義的類型,每一個(gè)變量都可能包含任一種類型的值。
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é)作線程)
數(shù)據(jù)結(jié)構(gòu):數(shù)組,矩陣和多維數(shù)組,列表,隊(duì)列和雙向隊(duì)列,集合和包,字符串緩沖。
標(biāo)準(zhǔn)庫:數(shù)學(xué)庫,string庫,IO庫,操作系統(tǒng)庫,Debug庫

Lua虛擬機(jī)

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

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

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

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

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

相關(guān)文章

  • Lua中的string庫和強(qiáng)大的模式匹配學(xué)習(xí)筆記

    Lua中的string庫和強(qiáng)大的模式匹配學(xué)習(xí)筆記

    這篇文章主要介紹了Lua中的string庫和強(qiáng)大的模式匹配學(xué)習(xí)筆記,本文著重總結(jié)了string庫的一些操作方法和函數(shù),需要的朋友可以參考下
    2015-04-04
  • Lua編程示例(六): C語言調(diào)用Lua函數(shù)

    Lua編程示例(六): C語言調(diào)用Lua函數(shù)

    這篇文章主要介紹了Lua編程示例(六): C語言調(diào)用Lua函數(shù),本文直接給出代碼實(shí)例,需要的朋友可以參考下
    2015-07-07
  • Lua中的元表和元方法學(xué)習(xí)筆記

    Lua中的元表和元方法學(xué)習(xí)筆記

    這篇文章主要介紹了Lua中的元表和元方法學(xué)習(xí)筆記,本文主要講解了getmetatable獲取元表、setmetatable修改元表等內(nèi)容,需要的朋友可以參考下
    2014-12-12
  • Lua基礎(chǔ)教程之表(Table)學(xué)習(xí)筆記

    Lua基礎(chǔ)教程之表(Table)學(xué)習(xí)筆記

    這篇文章主要介紹了Lua基礎(chǔ)教程之表(Table)學(xué)習(xí)筆記,本文來自個(gè)人總結(jié),需要的朋友可以參考下
    2014-09-09
  • Lua讀取和寫入文件處理例子

    Lua讀取和寫入文件處理例子

    這篇文章主要介紹了Lua讀取和寫入文件處理,本文直接給出實(shí)例代碼,需要的朋友可以參考下
    2014-11-11
  • Lua中讓回調(diào)函數(shù)支持回調(diào)對象方法的解決方法

    Lua中讓回調(diào)函數(shù)支持回調(diào)對象方法的解決方法

    這篇文章主要介紹了Lua中讓回調(diào)支持對象方法,一般情況下,Lua中只支持回調(diào)一個(gè)函數(shù),本文方法實(shí)現(xiàn)可以回調(diào)一個(gè)對象的方法,需要的朋友可以參考下
    2014-12-12
  • Lua中os庫詳細(xì)介紹

    Lua中os庫詳細(xì)介紹

    這篇文章主要介紹了Lua中os庫詳細(xì)介紹,本文詳細(xì)講解了OS庫中的常用方法,分別對參數(shù)做出了解釋,有的給出了示例,需要的朋友可以參考下
    2014-11-11
  • 使用Lua來擴(kuò)展C++程序的方法

    使用Lua來擴(kuò)展C++程序的方法

    這篇文章主要介紹了使用Lua來擴(kuò)展C++程序的方法,盡管更多的時(shí)候人們或許會想用C++來擴(kuò)展Lua...需要的朋友可以參考下
    2015-07-07
  • Lua中pairs與ipairs的區(qū)別總結(jié)

    Lua中pairs與ipairs的區(qū)別總結(jié)

    這篇文章主要給大家介紹了關(guān)于Lua中pairs與ipairs區(qū)別的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-09-09
  • Lua教程(九):元表與元方法詳解

    Lua教程(九):元表與元方法詳解

    這篇文章主要介紹了Lua教程(九):元表與元方法詳解,本文講解了算術(shù)類的元方法、關(guān)系類的元方法、庫定義的元方法、table訪問的元方法等內(nèi)容,需要的朋友可以參考下
    2015-04-04

最新評論

秦皇岛市| 开化县| 永顺县| 游戏| 奉贤区| 诸暨市| 德清县| 邳州市| 望江县| 定襄县| 敦煌市| 太保市| 三都| 阳新县| 高邮市| 女性| 龙门县| 西吉县| 榆林市| 攀枝花市| 潮州市| 利川市| 庆阳市| 建瓯市| 江源县| 漠河县| 武城县| 郸城县| 自贡市| 文化| 沁水县| 长垣县| 康定县| 堆龙德庆县| 精河县| 萝北县| 偏关县| 措勤县| 右玉县| 吴忠市| 大同市|