Lua資料結構

2021-06-09 02:51:53 字數 1711 閱讀 5923

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

for key, value in mydata do

print(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"]) --> 10

b["x"] = 20

print(a["x"]) --> 20

a = nil  -- now only `b' still refers to the table

b = 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

-- in mypolygon[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的訪問方式.

Lua資料結構。

方法一 local function dotest array for i 1,4 do array i for j 1,4 do array i j 12 end end for i 1,4 dofor j 1,4 do print array i j endend end 方法二 local f...

lua資料結構

1.說明 k v資料結構,k非nil的任意型別 2.賦值local tab 初始化 key 預設 local tab 訪問 tab 1 key 數字 local tab 訪問 tab 60 key 字串 local tab 訪問 tab.aa 1.方法一 local tab 1.增table.ins...

Lua資料結構

1.簡介 lua語言只有一種基本資料結構,那就是table,所有其他資料結構如陣列啦,類啦,都可以由table實現.2.table的下標 例e05.lua arrays mydata mydata 0 foo mydata 1 42 hash tables mydata bar baz iterat...