LUA 表與相關庫函式

2022-09-08 22:57:32 字數 2438 閱讀 8063

table表

lua表是一種很強大的資料結構,他可以統一,簡單且高效的表示陣列、集合、物件等多種資料結構。

函式math.sin在lua中就可以理解為以字串sin作為鍵來檢索math表。

表都是獨立的,他和引用他的變數之間沒有固定關係。

表可以具有不同型別的索引,a["x"]等價a.x,但與a[x]無關,因為"x"作為字串表示的是"x"鍵,而[x]表示的是變數,他對應x變數值表示的鍵。

表構造器與初始化

初始化的幾種形式

a = 等價 a =

a =  等價 a =

a = 等價 a =

a = {}  等價 a={}

a.x = 10   a["x"] = 10

a.y = 20   a["y"] = 20

a.z = 30   a["z"] = 30

使用操作符#獲取列表長度

對於連續的陣列序列可以使用#來計算長度,print (#) --> 2,序列遇到空洞nil會使計算中斷。

表的遍歷

迭代器pairs用於遍歷表中所有元素,而ipairs用於遍歷連續的序列。

語法:for k, v in pairs(table) do something end

安全訪問

判斷深巢狀表:zip = (((a or {}).company or {}).director or {}).address

利用邏輯or逐一層的判斷表或者子鍵是否為nil,從而最大程度減小對錶的訪問次數。

表插入:table.insert (list [,pos], value)

引數list:指定表,可選引數pos:指定插入位置,無引數時預設從尾端插入,引數value:插入的元素

如果插入的位置不是尾端,pos後面元素整體後移。

表刪除:table.remove (list [,pos])

返回被刪除的元素內容

引數list:指定表,可選引數pos:指定刪除位置,無引數時預設從尾端刪除。

如果刪除的位置不是尾端,pos後面元素整體前移。

表連線:table.concat (list [,sep [,i [,j]]])

返回將序列中所有元素連線後的字串

引數list:指定表,可選引數sep:拼接元素間的分割字元,無引數預設為""空字元,可選引數i:指定起始位置,可選引數j:指定終點位置。

表移動:table.move (list, i, j, pos [,list2])

引數list:指定表,引數i:選擇起點,引數j:選擇終點,引數pos:移動位置,可選引數list2:指定表2。

選擇以i為起點j為終點區間內所有元素,將他們複製貼上到pos位置或者是list2的pos位置,這個過程是一次覆蓋的過程,並不會使其他元素移動。

表展開:table.unpack (list [,i [,j]])

返回引數列表,按指定範圍(可選)將陣列元素展開為可以被呼叫的引數列表

引數list:指定表,可選引數i:展開起點,可選引數j:展開終點

表排序:table.sort (list [,comp])

引數list:指定表,可選引數comp:排序函式,無引數時通常按公升序排序。

排序函式針對表中連續的序列,其間不可以存在空洞nil,排序函式需要兩個形參(對應表中每次參加比較的兩個資料),而具體的排序方法需要函式返回比較兩個形參的表示式,不能含有等於關係,例如》=,<=,==,~=。

do

s = ,,,,,,}

function

st (s1, s2) -- 排序函式,兩個形參(變數名隨意)

if s1.name == s2.name then -- 如果他們名字一樣,就返回按等級公升序排序

return s1.lv else

return s1.name end--

return s1.name < s2.name or s1.name == s2.name and s1.lv < s2.lv -- 與上面等價

endtable.sort

(s, st)

for k, v in

ipairs(s) do

print

(k, v.name, v.lv)

endend

--[[

1  王五  24

2  張三  20

3  李四  55

4  李四  60

5  李四  68

6  趙六  34

7  老劉  80

--]]

Lua中table庫函式詳解

table.concat table,sep,start,end table.concat 函式列出table中陣列部分從下表start到end的所有元素,元素中間以字元sep隔開,預設字元為空字元,其中table引數必填,其餘三個引數可以不填。例 t print table.concat t,1,...

Lua中math庫函式列表

函式名 描述示例 結果pi 圓周率math.pi 3.1415926535898 abs取絕對值 math.abs 2012 2012 ceil 向上取整 math.ceil 9.1 10floor 向下取整 math.floor 9.9 9max 取引數最大值 math.max 2,4,6,8 8...

Lua學習筆記Day1 Lua標準庫函式

本文內容來自lua官方文件 math.pi 返回pi的值 math.huge 返回乙個最大數 math.abs x 返回x的絕對值 math.ceil x 向上取整 math.floor x 向下取整 math.fmod x,y x y取模,注意小數 math.modf x 取x的整數和小數部分 m...