透過例子學習Lua(3)----Lua資料結構(轉)
透過例子學習Lua(3)----Lua資料結構(轉)[@more@] 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 = { color=“blue”, thickness=2, npoints=4; {x=0, y=0}, {x=-10, y=0}, {x=-5, y=4}, {x=0, y=4} } -- 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裡面有{x=0,y=0}, 這是什麼意思呢? 這其實就是一個小table, 定義在了大table之內, 小table的 table名省略了. 最後一行myPolygon[2].x,就是大table裡面小table的訪問方式.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-951605/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 透過例子學習Lua(2)---Lua流程控制(轉)
- 透過例子學習Lua(5)--Lua與C的互動(轉)
- 透過例子學習Lua(6)--C/C++中用Lua函式(轉)C++函式
- 透過例子學習Lua(4)--函式的呼叫(轉)函式
- 透過例子學習Lua(7)--呼叫C/C++函式(轉)C++函式
- lua 學習總結
- Lua學習筆記筆記
- Lua遊戲開發(三)---Lua語言學習(上)遊戲開發
- Lua 學習筆記(上)筆記
- 學習Lua的意義
- 從sysbench中學習Lua
- Lua學習筆記(一)筆記
- lua版promise實現3 - 條件判斷例子Promise
- lua學習: lua及函數語言程式設計語言函數程式設計
- Lua學習(二)物件導向物件
- redis學習(八) Lua語法Redis
- Lua5.3學習筆記筆記
- lua課程學習筆記筆記
- 《Lua-in-ConTeXt》09:學一點 LuaContext
- sublime text 3繫結lua編譯器編譯
- 資料結構學習(C++)——遞迴【2】(3) (轉)資料結構C++遞迴
- 資料結構學習(C++)——遞迴【3】(1) (轉)資料結構C++遞迴
- 資料結構學習(C++)——遞迴【3】(2) (轉)資料結構C++遞迴
- 熱更新語言--lua學習筆記筆記
- 0基礎lua學習(十四)封裝封裝
- Lua學習筆記--物件導向(三)筆記物件
- 資料結構學習(C++)續——排序【3】交換排序 (轉)資料結構C++排序
- 資料結構學習(C++)——二叉樹【3】 (轉)資料結構C++二叉樹
- 透過結構化資料構建頁面
- redis原始碼學習之lua執行原理Redis原始碼
- 資料結構學習(C++)——序言 (轉)資料結構C++
- 資料結構學習筆記(一) (轉)資料結構筆記
- 資料結構學習(C++)——圖【3】(無向圖)(上) (轉)資料結構C++
- 資料結構學習(C++)——圖【3】(無向圖)(下) (轉)資料結構C++
- redis必會基礎命令、資料結構、lua指令碼和分散式鎖等Redis資料結構指令碼分散式
- 資料結構學習(C++)——圖(總結) (轉)資料結構C++
- 資料結構學習(C++)——樹(總結) (轉)資料結構C++
- 資料結構學習資料結構