lua中table的常用方法
转载:https://blog.csdn.net/Fenglele_Fans/article/details/83627021
1:table.sort()
language = {"lua","java","c#","c++"}
table.sort(language) --只有table一个参数,使用lua默认的排序方式排序
for i, v in ipairs(language) do
-- print(v) --输出c# c++ java lua
end
local function my_comp1(element1,element2) --自定义比较函数 作为table.sort()参数
return element1<element2
end
table.sort(language,my_comp1)
for i, v in ipairs(language) do
print(v) --输出 c# c++ java lua
end
local function my_comp2(element1,element2) --自定义比较函数 作为table.sort()参数
return element1>element2
end
table.sort(language,my_comp2)
for i, v in ipairs(language) do
-- print(v) --输出lua java c++ c#
end
local function my_comp3(element1,element2) --自定义比较函数 作为table.sort()参数
if element1==nil then
return false
end
if element2==nil then
return true
end
return element1>element2
end
language[2]=nil --table中有nil存在的情况
table.sort(language,my_comp3)
for i, v in ipairs(language) do
-- print(v) --输出lua c++ c#
end
2:table.insert()
tab2 = {"a",2,"b",5} --定义一个table
table.insert(tab2,2,"king") --指定在某一位置插入某值
for i, v in ipairs(tab2) do
-- print(v) --输出a king 2 b 5
end
table.insert(tab2,3) --没有指定位置的话,默认将值插入到末尾位置
for i, v in ipairs(tab2) do
-- print(v) --输出a king 2 b 5 3
end
tab3 = {"d",7,"e"}
table.insert(tab2,tab3) -- 将table插入table
for i, v in ipairs(tab2[7]) do
--print(v) --输出d 7 e
end
tab2["mm"]="mmm" --添加一个新的键值对 下面的for迭代器选择pairs才能将新的键值对遍历出来,而非ipairs
for i, v in pairs(tab2) do
print(i,v) --输出1 a ; 2 king ; 3 2 ; 4 b ; 5 5 ; 6 3 ; 7 table ;mm mmm
end
3:table.concat()
tab1 = {"a","b","c",5,"d"}
local aa = table.concat(tab1)
local bb = table.concat(tab1,"/")
local cc = table.concat(tab1,",",2,4)
print(aa) --输出abc5d
print(bb)--输出a/b/c/5/d
print(cc) --输出b,c,5
print(type(aa)) --输出string
print(type(bb)) --输出string
print(type(cc)) --输出string
--再来测试一下table.concat()的效率
local strings = {} --定义一个局部table
for i = 1, 100000 do
strings[i]="hahaha" --给这个table赋值
end
--local stringT = ""
--local startTime = os.clock() --os.clock()获取当前系统时间
--for i,v in ipairs(strings) do
-- stringT=stringT..v --使用for循环连接字符串
--end
--local endTime = os.clock()
--local usedTime = endTime-startTime
--print("for循环连接字符串消耗的时间:"..usedTime) --输出13.135
local startTime = os.clock()
table.concat(strings)
local endTime = os.clock()
local usedTime=endTime-startTime
print("使用table.concat()连接字符串所消耗的时间:"..usedTime) --输出0.01(快了不是一点半点)
4:table.remove()
tab4 = {1,4,"tt","jj"}
table.remove(tab4,1) --移除指定位置的table值,若没有指定位置,则默认移除最后一位的元素
for i, v in ipairs(tab4) do
print(v) --输出 4 tt jj
end
5:unpack()
tab5 = {"b","v","b","f","a"} print( unpack(tab5,1,3)) --输出b v b print(unpack(tab5)) --输出b v b f a
6.table.getn(studentList)获取字符串长度
lua中table的常用方法的更多相关文章
- lua中 table 元表中元方法的重构实现
转载请标明出处http://www.cnblogs.com/zblade/ lua作为游戏的热更新首选的脚本,其优势不再过多的赘述.今天,我主要写一下如何重写lua中的元方法,通过自己的重写来实现对l ...
- lua中 table 重构index/pairs元方法优化table内存占用
转载请标明出处http://www.cnblogs.com/zblade/ lua作为游戏的热更新首选的脚本,其优势不再过多的赘述.今天,我主要写一下如何重写lua中的元方法,通过自己的重写来实现对l ...
- lua中 table.getn(t) 、#t、 table.maxn(t) 这三个什么区别?
lua中 table.getn(t) .#t. table.maxn(t) 这三个什么区别? RTlocal t = {1,888,x= 999,b=2,5,nil,6,7,[10]=1,8,{z = ...
- Lua中table的实现-《Lua设计与实现》
本文来自<Lua设计与实现>的阅读笔记,推荐Lua学习者可以购买一本,深入浅出讲解lua的设计和实现原理,很赞,哈哈 Lua中对于表的设计,是基于数组和散列表,和其他语言不同,对于数组 ...
- lua中table的遍历,以及删除
Lua 内table遍历 在lua中有4种方式遍历一个table,当然,从本质上来说其实都一样,只是形式不同,这四种方式分别是: 1. ipairs for index, value in ipair ...
- lua中table如何安全移除元素
在Lua中,table如何安全的移除元素这点挺重要,因为如果不小心,会没有正确的移除,造成内存泄漏. 引子 比如有些朋友常常这么做,大家看有啥问题 将test表中的偶数移除掉local test = ...
- C++对Lua中table进行读取、修改和创建
C++代码: // LuaAndC.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> #i ...
- Lua中Table的学习
--table 是 Lua 的一种数据结构,用来帮助我们创建不同的数据类型,如:数组.字典等 --Lua也是通过table来解决模块(module).包(package)和对象(Object)的. 例 ...
- lua中遍历table的几种方式比较
当我在工作中使用lua进行开发时,发现在lua中有4种方式遍历一个table,当然,从本质上来说其实都一样,只是形式不同,这四种方式分别是: for key, value in pairs(tbtes ...
随机推荐
- 个人技术博客二之apk反编译与加密
根据原文郭霖大神的博客Android安全攻防战,反编译与混淆技术完全解析 本人亲测反编译真的没有什么卵用,个人纯属好奇就去搜了一下,偷窃有罪,抄袭可耻. 1.手机上的apk都是打包好的,直接安装使用. ...
- python第八课——random模块的使用
2.2.如何获取随机整数值? 引入random模块的使用 randint(a,b)函数:作用:返回给程序一个[a,b]范围内的随机整数注意:含头含尾闭区间 思路步骤: 第一步:导入random模块到相 ...
- mongodb启动与运用
在操作前需要启动mongodb数据库服务 1.首先打开dos窗口,然后选择路径到你的安装路径下的bin目录(我的路径是的D:mongo\mongodb\bin) 2.然后输入启动命令(D:mongo\ ...
- HashMap实现原理及源码分析之JDK7
攻克集合第一关!! 转载 http://www.cnblogs.com/chengxiao/ 哈希表(hash table)也叫散列表,是一种非常重要的数据结构,应用场景及其丰富,许多缓存技术(比如m ...
- kubernetes 网络模型
在Kubernetes模型中,每个Docker主机的docker0网桥都是可以路由的. 那就是说,当一个Pod部署后,集群其他主机能够不在物理主机上做端口映射就可以直接访问Pod. 有了这种说法,从网 ...
- Debian 8 安装录屏软件kazam
1 安装 $ sudo apt-get install kazam [sudo] password for z: 正在读取软件包列表... 完成 正在分析软件包的依赖关系树 正在读取状态信息... 完 ...
- 解决IOS9 下在App中无法打开其他应用的问题
打开 info.plist 文件 ,在根节点下添加下面代码即可,这是由于IOS9新的权限管理机制的问题 <key>LSApplicationQueriesSchemes</key&g ...
- 初学node.js-MongoDB安装和环境服务配置(4)
一.mongoDB安装: (1)官网下载,我的是windows64位系统,目前最新版mongodb-win32-x86_64-2008plus-ssl-4.0.9-signed.msi 安装步骤不说了 ...
- SAP函数PREPARE_STRING:提取字符串中的数字
今天调整一个同事的需求时,要计算一个含税金额.报表内已经取到税率,但存在的形式是字符串格式:16%. 正好SAP内有一个标准函数:PREPARE_STRING 可以处理字符串,将特别标志替换为有效标志 ...
- 在centos环境下编译安装myrocksdb
rocksdb(https://rocksdb.org.cn/)是脸书(facebook)公司开源的一个key-value存储引擎,基于leveldb开发.rocksdb使用的是LSM存储引擎,纯c+ ...