透過例子學習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 學習總結
- lua版promise實現3 - 條件判斷例子Promise
- Lua 學習筆記(上)筆記
- 學習Lua的意義
- Lua學習記錄 20201027
- 《Lua-in-ConTeXt》09:學一點 LuaContext
- Lua學習(二)物件導向物件
- redis學習(八) Lua語法Redis
- lua課程學習筆記筆記
- 熱更新語言--lua學習筆記筆記
- 透過結構化資料構建頁面
- redis必會基礎命令、資料結構、lua指令碼和分散式鎖等Redis資料結構指令碼分散式
- redis原始碼學習之lua執行原理Redis原始碼
- lua~IDEA中除錯lua指令碼Idea除錯指令碼
- 【Lua】VSCode 搭建 Lua 開發環境VSCode開發環境
- lua——alien庫實現lua呼叫C動態連結庫(dll、so)
- Hello Lua
- Lua 特性
- 資料結構學習資料結構
- lua版promise實現 - 結束Promise
- C#與Lua語言學習對比一C#
- lua基礎教程(轉其他網站)網站
- openresty通過lua增加隨機traceidREST隨機
- 資料結構學習之樹結構資料結構
- 資料結構學習心得資料結構
- lua unpack 陷阱
- Android 與 LuaAndroid
- Lua table(表)
- Lua math庫
- Lua迭代器
- Lua乾貨
- 資料結構學習--連結串列資料結構
- 資料結構學習總結--圖資料結構
- nginx-通過lua動態更改upstreamNginx
- 大二資料結構學習3(棧和佇列)資料結構佇列
- 教你如何用 Lua 操作檔案中的資料
- 資料結構學習筆記資料結構筆記
- SpringBoot學習之資料結構Spring Boot資料結構
- 透過資料結構實現簡易通訊錄資料結構