LUA 中table的方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LUA 中table的方法相关的知识,希望对你有一定的参考价值。
LUA 中table的方法都有什么?最好说的详细点
在Lua中,table(表)是主要的数据结构(事实上也仅此一种),数组则是table的一种特殊应用。
——table的介绍
lua中,有预加载的table库。
在这个table库中包含了如下函数:
setn
insert
getn
foreachi
maxn
foreach
concat
sort
remove
要调用它们,使用table.函数名(参数列表)。
demo:
print(table.maxn(1,2,3)) --> 获取table的最大长度
table.sort(table) --> 给表table排序
table.insert(table,"Hi") --> 给table增加下标为1的"Hi"元素
print(table[1]) --> Hi
table.remove(table,1) --> 给table删除下标为1的元素
print(table[1]) --> nil
如果你是想问table有那些相关的操作函数的话
我就说几个常见的吧
table.sort()
table.insert()
table.remove()
table.concat()
1 排序 23 插入删除 4 字符串连接
其他还有 不过用的比较少就是了 参考技术B table是表,我们可以先新建一个table:
table1 = 1,2,3,4,5
使用table名字[第几个元素]可以快速访问table指定位置的元素,刚刚已经新建了一个table
现在用这个方法访问
local a = table1[1]
print(a)
结果:1
同样也可以使用.访问:
print(table1.3)
结果:3
table操作:
table.concat (table [, sep [, start [, end]]])
连接table中start到end之间的所有元素,元素间用sep隔开
table.insert(table,[pos,]value)
在table中pos位置插入value(pos可选,如果不指定,默认为table结尾)
table.remove(table,[pos])
返回并删除table中pos位置的元素,pos可选,如果不指定,默认为table结尾
table.sort(table,[pos])
给table进行升序或降序排序 参考技术C 没懂你的意思。
不知道你说的是操作table的基本方法还是其它什么。
lua中,两种json和table互转方法的效率比较
- 在用lua编写的服务器中,如果客户端发送json格式的数据,那么在lua处理业务逻辑的时候,必然需要转换成lua自己的数据结构,如table。此时,就会用到table和json格式的互转。
- 在用lua编写的服务器中,如果我们通过redis来存储数据,由于redis中不存在table这种数据结构,因此,我们可以选择将table转换成json字符串来进行存储。在数据的存取过程中,也会用到table和json格式的互转。
以上两种场景中,json和table的互转使用频率是非常高的,如果转换效率有提升,对于降低我们业务延时将会有很大的帮助。因此,选择一种高效率的转换方式的重要性可见一斑。
下面我们简单介绍两种转换方式,并对他们的转换效率做一个对比。
local t = { a = "hello", b = "world", c = 123456, d = "123456", e = {"hhh", "11", "22"}, f = { a = "hello", b = "world", c = 123456, d = "123456", e = {"hhh", "11", "22"}, count = 0 } } local tm1 = os.time() local str_json = "" for i = 1, 50000, 1 do --str_json = json.encode(t) --t = json.decode(str_json) str_json = cjson.encode(t) t = cjson.decode(str_json) t.f.count = t.f.count + 1 end local tm2 = os.time() print("tm1:" .. tm1 .. ",tm2:" .. tm2 .. ",dt:" .. (tm2 - tm1)) print(str_json)
tm1:1575363384,tm2:1575363435,dt:51 {"a":"hello","c":123456,"b":"world","e":["hhh","11","22"],"d":"123456","f":{"a":"hello","c":123456,"b":"world","e":["hhh","11","22"],"d":"123456","count":49999}}
tm1:1575363457,tm2:1575363462,dt:5 {"a":"hello","c":123456,"b":"world","e":["hhh","11","22"],"d":"123456","f":{"a":"hello","c":123456,"b":"world","e":["hhh","11","22"],"d":"123456","count":49999}}
以上是关于LUA 中table的方法的主要内容,如果未能解决你的问题,请参考以下文章