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...