一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術(shù)及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Lua - Lua腳本語言概述

Lua腳本語言概述

2020-04-13 10:51junjie Lua

這篇文章主要介紹了Lua腳本語言概述,本文講解了Lua是什么、Lua語言的特性、Lua的使用范圍、Lua的基本內(nèi)容、Lua虛擬機等內(nèi)容,需要的朋友可以參考下

Lua是什么

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

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

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

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

Lua語言的特性

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

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

Lua的使用范圍

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

Lua的基本內(nèi)容

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

1.數(shù)值(number):內(nèi)部以double表示=====》算術(shù)運算符(+,-,*,/,^(冪),%),關(guān)系運算符(>,<,<=,>=,==,~=)====》數(shù)學庫
2.字符串(string):總是以零結(jié)尾,但可以包含任意字符(包括零),因此并不等價于C字符串,而是超集===》連接運算符====》string庫
3.布爾(boolean):只有true,false兩個值------>邏輯運算符(and,or,not)。在控制結(jié)構(gòu)的條件中除了false和nil為假,其他值都為真。所以Lua認為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作類比,但它不是空指針。

 

復制代碼 代碼如下:

print(type("Hello world")) --> string
print(type(10.4*3)) --> number
print(type(type)) --> function
print(type(true)) --> boolean
print(type(nil)) --> nil
--變量沒有預定義的類型,每一個變量都可能包含任一種類型的值。
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

 

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

Lua虛擬機

Lua腳本語言概述

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

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

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

Lua腳本語言概述

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

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

延伸 · 閱讀

精彩推薦
  • LuaLua中計算、執(zhí)行字符串中Lua代碼的方法

    Lua中計算、執(zhí)行字符串中Lua代碼的方法

    這篇文章主要介紹了Lua中計算、執(zhí)行字符串中Lua代碼的方法,類似JavaScript中eval函數(shù)的功能,在Lua中也可以實現(xiàn),需要的朋友可以參考下 ...

    腳本之家6322020-04-30
  • Lua深入探究Lua中的解析表達式

    深入探究Lua中的解析表達式

    這篇文章主要介紹了深入探究Lua中的解析表達式,對于其語法部分的說明和示例都超詳細,極力推薦此文!需要的朋友可以參考下 ...

    腳本之家3542020-05-05
  • LuaLua中的元方法__newindex詳解

    Lua中的元方法__newindex詳解

    這篇文章主要介紹了Lua中的元方法__newindex詳解,本文講解了查詢與更新、監(jiān)控賦值、通過table給另一個table賦值等內(nèi)容,需要的朋友可以參考下 ...

    笨木頭8872020-04-09
  • LuaLua和C語言的交互詳解

    Lua和C語言的交互詳解

    這篇文章主要介紹了Lua和C語言的交互詳解,Lua和C語言通過棧完成交互,本文結(jié)合代碼實例詳細講解了交互的方法,需要的朋友可以參考下 ...

    果凍想3702020-04-14
  • LuaLua中table庫函數(shù)方法介紹

    Lua中table庫函數(shù)方法介紹

    這篇文章主要介紹了Lua中table庫函數(shù)方法介紹,本文講解了concat、insert、maxn、remove、sort、foreachi等方法,需要的朋友可以參考下 ...

    腳本之家2502020-04-17
  • LuaLua教程(二):基礎(chǔ)知識、類型與值介紹

    Lua教程(二):基礎(chǔ)知識、類型與值介紹

    這篇文章主要介紹了Lua教程(二):基礎(chǔ)知識、類型與值介紹,本文講解了Hello World程序、代碼規(guī)范、全局變量、類型與值等內(nèi)容,需要的朋友可以參考下 ...

    腳本之家5922020-04-28
  • LuaLua簡介、編譯安裝教程及變量等語法介紹

    Lua簡介、編譯安裝教程及變量等語法介紹

    這篇文章主要介紹了Lua簡介、編譯安裝教程及變量等語法介紹,本文同時講解了lua注釋語法、Lua命令行方式等內(nèi)容,需要的朋友可以參考下 ...

    junjie3632020-04-14
  • LuaLua實現(xiàn)__add方法重載示例

    Lua實現(xiàn)__add方法重載示例

    這篇文章主要介紹了Lua實現(xiàn)__add方法重載示例,本文直接給出實現(xiàn)代碼,需要的朋友可以參考下 ...

    腳本之家7452020-04-24
主站蜘蛛池模板: tk白嫩玉足脚心vk | 久青草国产在视频在线观看 | 美女班主任让我爽了一夜视频 | 男男视频18免费网站 | 青草青草伊人精品视频 | 日韩在线a视频免费播放 | 国产xxxxxx久色视频在 | 男人天堂日韩 | 午夜剧场1000 | 国产成人久久久精品一区二区三区 | 欧美一区二区三区不卡视频 | 国产亚洲成归v人片在线观看 | 深夜网站在线观看 | 日韩精品亚洲专区在线影视 | 99精品视频在线观看re | 久久人妻熟女中文字幕AV蜜芽 | 亚洲午夜小视频 | 久久人妻熟女中文字幕AV蜜芽 | 九九在线免费视频 | 日本男男gayxxxxx免费 | 隔壁老王国产在线精品 | 国内精品视频九九九九 | 欧美黑人性 | 91一区二区在线观看精品 | 久久视频精品3线视频在线观看 | 欧美日韩一区二区中文字幕视频 | 情侣宾馆愉拍自拍视频 | 香蕉人人超人人超碰超国产 | 无套内射在线观看THEPORN | 91精品国产综合久 | 美女脱了内裤打开腿让你桶爽 | 明星乱亚洲 | 貂蝉沦为姓奴小说 | 肥胖老寡妇做性 | 精品AV综合导航 | 久久视频精品3线视频在线观看 | 日韩欧美一区二区三区 | 鬼惨笑小说 | 国产成人在线播放视频 | 青青青视频免费观看 | 国产乱人乱精一区二区视频密 |