Lua之Table

xiaoxiao2025-09-14  263

table:

table 是一个“关联数组”,数组的索引可以是数字或者是字符串

table 的默认初始索引一般以 1 开始

table 不会固定长度大小,有新数据插入时长度会自动增长

table 所有元素之间,总是用逗号 “,” 隔开

 

table.insert

table.insert将一个元素插入到指定位置

t={1,2,3,4} table.insert( t, 1,2 ) for i=1,#t do print(t[i]) end

ta={} table.insert( ta, "a" ) table.insert( ta, 2 ) table.insert( ta, "c" ) for k,v in pairs(ta) do print(k,v) end

insert的第二个参数是可以省略的,这样就会插入到数组的最后,从而不必移动其他元素

 

table.sort() 

对数组进行排序,如果没有提供排序函数,默认是<操作。这里不仅仅是数,对字符串也有效

t={1,4,3,5} table.sort( t) for i=1,#t do print(t[i]) end ta={"ab","zfd","fgv","bcc"} table.sort( ta) for k,v in ipairs(ta) do print(k,v) end

报错例子

table.sort是排序函数,它要求要排序的目标table的必须是从1到n连续的,即中间不能有nil

ta={"ab","zfd",2,"fgv","bcc"} table.sort( ta ) for k,v in pairs(ta) do print(k,v) end

 

table.sort(tableName,function)

local t = { 10,2,15,1,4 } local function compare( a, b ) return a > b end table.sort( t, compare ) print( table.concat( t, ", " ) )

多个条件的比较

1.等级比较

2.id比较

3.指数比较

function(a, b) if a.level ~= b.level then return a.level > b.level end if a.id~=b.id then return a.id>b.id end return a.exp > b.exp end

table.concat() 

concat()函数列出参数中指定table的数组部分从start位置到end位置的所有元素, 元素间以指定的分隔符(sep)隔开。除了table外, 其他的参数都不是必须的, 分隔符的默认值是空字符, start的默认值是1, end的默认值是数组部分的总长

spring = {"床前", "明月", "地上霜"} print(table.concat(spring, ",")) print(table.concat(spring, ",",1,2)) print(table.concat(spring, "\n",1,3)) num = {3 ,4, 5} print(table.concat (num ,"<"))

--床前,明月,地上霜

--床前,明月

--床前 --明月 --地上霜

table.maxn()  含义:table.maxn()函数返回指定table中所有正数key值中最大的key值。 如果不存在key值为正数的元素, 则返回0。 此函数不限于table的数组部分。 

table.pack()

table.pack函数是获取一个索引从 1 开始的参数表 table,并会对这个 table 预定义一个字段 n,表示该表的长度

t = table.pack("test", "param1", "param2", "param3") print(t)

结果:

1 : test  2 : param1  3 : param2  4 : param3  n : 4

table.unpack(table, start, end)

用于返回 table 里的元素,参数 start 是开始返回的元素位置,默认是 1,参数 end 是返回最后一个元素的位置,默认是 table 最后一个元素的位置,参数 start、end 都是可选

t = {"Lua", "C#", "Python", "Java"} print(,t) print(table.unpack(t)) a, b, c, d = table.unpack(t) print(b) print(a, b, c, d) print(table.unpack(t, 2)) print(table.unpack(t, 2, 3)) --1 : Lua --2 : C# --3 : Python --4 : Java --Lua C# python Java --C# --Lua C# Python Java --C# Python Java --C# Python

table.remove(table, pos)

删除并返回table数组部分位于pos位置的元素. 其后的元素会被前移. pos参数可选, 默认为table长度, 即从最后一个元素删起,并且参数 pos 的类型只能是数字 number 类型

local tbl = {"A", "B", "C", "D"} table.remove(tbl, 3) print(table.concat(tbl, "、")) table.remove(tbl) print(table.concat(tbl, "、"))

转载请注明原文地址: https://www.6miu.com/read-5036325.html

最新回复(0)