Lua之Table

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

猜你喜欢

转载自blog.csdn.net/u012909508/article/details/83383579