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, "、"))