Lua指令碼程式設計 Lua語言入門

2021-06-28 21:56:41 字數 2411 閱讀 5930

lua系統由lua鏈結庫、luac編譯器、lua直譯器三部分構成。

* lua鏈結庫主要由lua.lib和lua.h這兩個檔案組成。lua鏈結庫主要負責對自身進行初始化及關閉操作、裝載指令碼與執行指令碼、提

供可呼叫互動介面。

* luac編譯器是乙個由命令列驅動的編譯器,其名稱為luac。當我們需要使用luac編譯器來編譯乙個指令碼時,只需輸入

>luac     //filename為指令碼名稱
我們可以直接通過lua鏈結庫來裝載指令碼並在裝載的過程中實現動態編譯,可是這樣會造成兩個問題,即無法在動態編譯過程中獲取錯誤資訊和動態編譯使指令碼載入速度變慢,在使用的時候應該注意到這個問題。

* lua直譯器是乙個由命令列驅動的**執行環境,我們可以直接在這個環境中執行和測試指令碼**。

> -

-這是一句注釋

當我們需要對多行指令碼進行注釋的時候,可以採取手動換行的方式進行多個單行的注釋。

* 變數:lua指令碼中的變數是無型別的、隱式宣告、首個字元必須是非數字字元、對大小寫敏感。lua指令碼中變數的乙個重要特性生支援多重賦值,即允許在賦值運算子的左邊同時寫下多個變數。如

-- 變數個數等於數值個數

x,y,z=1,2,3

-- 變數個數大於數值個數,z的值為nil

x,y,z=1,2

-- 變數個數小於數值個數,3這個數值將被忽略

x,y=1,2,3

數字(number)指整型和浮點型的資料。

字串(string)指字串型別的資料。

函式(function)指乙個正式宣告的函式的引用。如:

function

fib(n)

if(n<2) then

return n

else

return fib(n-1)+fib(n-2)

endend-- 在lua中函式可以賦值給變數

fib2=fib

-- 呼叫fib函式

print(fib2(5))

表(table)是lua語言中最簡單同時是最複雜的資料結構:簡單如普通陣列,複雜如鍊表、字典、類等。

-- 我們在構造乙個資料集合時,不需要指定資料型別和資料大小

-- 完成初始化後的資料集合預設索引從1開始,除非顯示地宣告索引0處的數值

-- 構造乙個數字型別的陣列

intarray=

-- 構造乙個字串型別的陣列

stringarray=

-- 列印intarray的第乙個元素,輸出為1

print(intarray[1])

-- 顯示宣告stringarray索引0處的數值

stringarray[0]="e"

-- 列印stringarray的第乙個元素和第二個元素,輸出為e,a

print(stringarray[0],stringarray[1])

-- 列印乙個越界的陣列值,輸出為nil

print(intarray[10])

-- 在lua中表的資料型別可以是不同的

table[0]="table"

table[1]=1

-- 在lua中表的索引可以是任意型別,因為表是基於鍵-值原理來工作的

enemy={}

enemy["name"]="enemy"

enemy["hp"]=100

enemy["speed"]=30

-- 特別地,如果key是乙個合法的字串型別,那麼table[key]與table.key是等價的。

enemy={}

enemy.name="enemy"

enemy.hp=100

enemy.speed=30

使用者資料(userdata)是lua語言中乙個特殊的資料型別,它允許在lua指令碼的變數中存放c語言中的指標。

空值(nil)是各種語言中通用的一種資料型別,在此不再贅述。

在lua指令碼中我們可以使用type()函式來獲取任意資料的型別

-- 這是乙個while迴圈

i=0while(i<10) do

i++print(i)

end-- 這是乙個for迴圈

for i=0,10

do print(i)

end-- 這是乙個repeat迴圈

repeat

print(i)

i++until(i>10)

-- 這是乙個擴充套件的for迴圈,類似於foreach結構,主要用來遍歷表(table)

for key,value

in tables do

print(k,value)

end

待更新,等研究完以後再更新吧,編譯lua5.3一直沒有成功…..

LUA指令碼語言入門

使用例程 1.函式的使用 以下程式演示了如何在lua中使用函式,及區域性變數 例e02.lua functions function pythagorean a,b local c2 a 2 b 2 return sqrt c2 end print pythagorean 3,4 執行結果 5程式說...

五 Lua指令碼語言入門

恢復內容開始 寫完這篇lua指令碼語言入門,自己就要嘗試去用lua指令碼語言寫esp8266了,自己現在挺心急的,因為朋友使用esp8266本來說自己幫忙寫好程式的,但是用的微控制器不一樣自己沒有,沒有辦法測試,用at指令就顯得不方便,還要根據微控制器改程式,而且自己以前用感覺at指令發資訊那塊,麻...

lua解析lua指令碼

lua中使用loadstring可以直接以字串形式執行 loadfile可以直接解析 為lua function.如果乙個lua資料檔案有結尾返回例如 return sound 則可以直接使用 dofile來執行檔案,執行結果就是sound table。如果lua資料檔案沒有返回值,dofile不可...