通過例子學習Lua 3 Lua資料結構

2021-05-22 03:23:03 字數 1879 閱讀 1020

1.簡介

lua語言只有一種基本資料結構, 那就是table, 所有其他資料結構如陣列啦,

類啦, 都可以由table實現.

2.table的下標

例e05.lua

--arrays

mydata ={}

mydata[0]

=「foo」

mydata[1]

=42--hash tables

mydata[「bar」]

=「baz」

--iterate through the

--structure

forkey, value

inmydata

doprint(key .. 「

=「 .. value)

end

輸出結果

0=foo

1=42

bar=baz

程式說明

首先定義了乙個table mydata={}, 然後用數字作為下標賦了兩個值給它. 這種定義方法類似於c中的陣列, 但與陣列不同的是, 每個陣列元素不需要為相同型別,就像本例中乙個為整型, 乙個為字串.

程式第二部分, 以字串做為下標, 又向table內增加了乙個元素. 這種table非常像stl裡面的map. table下標可以為lua所支援的任意基本型別, 除了nil值以外.

lua對table占用記憶體的處理是自動的, 如下面這段**

a ={}

a["x

"] =10

b =a --`b'

refers to the same table as `a

'print(b["x

"])

-->

10b["x

"] =20

print(a["x

"])

-->

20a

=nil

--now only `b

'still refers to the tableb =

nil

--now there are no references left to the table

b和a都指向相同的table, 只占用一塊記憶體, 當執行到a = nil時, b仍然指向table,

而當執行到b=nil時, 因為沒有指向table的變數了, 所以lua會自動釋放table所佔記憶體

3.table的巢狀

table的使用還可以巢狀,如下例

例e06.lua

--table 『constructor』

mypolygon =,

,  ,}--

print the color

print(mypolygon[「color」])

--print it again

using

dot  

--notation

print(mypolygon.color)

--the points are accessible

--inmypolygon[

1] to mypolygon[4]

--print the second point』s x

--coordinate

print(mypolygon[

2].x)

程式說明

首先建立乙個table, 與上一例不同的是,在table的constructor裡面有,這是什麼意思呢? 這其實就是乙個小table, 定義在了大table之內, 小table的table名省略了.

最後一行mypolygon[2].x,就是大table裡面小table的訪問方式.

1

lua指令碼學習3

兩個減號是單行注釋 多行注釋 多行注釋 lua 表示符用於定義乙個變數,函式獲取其他使用者定義的項。標示符以乙個字母 a 到 z 或 a 到 z 或下劃線 開頭後加上0個或多個字母,下劃線,數字 0到9 最好不要使用下劃線加大寫字母的標示符,因為lua的保留字也是這樣的。lua 不允許使用特殊字元如...

Lua學習筆記3 函式

函式定義形如 function 函式名 引數列表 函式體end 例如 function add a,b return a b end相當於 add function a,b return a b end 和c語言一樣,lua的函式可以接受可變引數個數,它同樣是用 來定義的,比如 function s...

Lua 學習備忘錄3

一些大型遊戲需要對資料的整理,這樣便於修改和統一管理還有修改。常見的有js和csv csv 其實就是都好分割的簡單文字結構,所以當作一般的文本來處理就好了,js需要解析,有現成的解析庫 function getline filename index 0 myline for line in io.l...