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 ...
随机推荐
- Zeal——好用的离线 API 文档大全!
介绍 作为一名程序员,工作中学习中免不了是要查询API文档的,毕竟我们能记住的东西有限,而且经常也会碰到某个API一时想不起来的情况,而每次还要打开网页去查询还是挺麻烦的,这时候拥有一个款好用的本地离 ...
- Android混合式开发(Hybrid)
安卓混合式开发(Hybrid) 1 环境搭建 1.1 首先,下载 Android Studio (Intellij Idea) 下载地址:http://www.android-studio.org/ ...
- Codeforces gym 101343 J.Husam and the Broken Present 2【状压dp】
2017 JUST Programming Contest 2.0 题目链接:Codeforces gym 101343 J.Husam and the Broken Present 2 J. Hu ...
- 情绪ABC理论
美国著名心理学家阿尔伯特·艾利斯 [Albert Ellis 1913.09.27]于20世纪50年代创立, 其理论认为引起人们情绪困扰的并不是外界发生的事件,而是人们对事件的态度.看法.评价等认知内 ...
- Java实现数据库操作
Java实现数据库操作 这里的样例是使用mysql数据库 代码实现 /* MySQLHelper.java */ import java.io.*; import java.util.*; impor ...
- css自问自答(一)
css自问自答(一) 1.块级元素和行内元素特性与区别? 块级:display:block <div>.<p>.<h1>...<h6>.<ol&g ...
- Rserve详解,R语言客户端RSclient【转】
R语言服务器程序 Rserve详解 http://blog.fens.me/r-rserve-server/ Rserve的R语言客户端RSclient https://blog.csdn.net/u ...
- 初识Qt涂鸦板绘制
1.新建一个Qt Gui应用,项目名称为myPalette,基类选择为QMainWindow,类名设置为MainWindow. 2.在mainwindow.h头文件中添加以下代码,同时添加#inclu ...
- 权限管理系统---django版本
权限管理:在简单的系统中,以往都是将每个权限赋予给用户,每个用户访问某个功能,通过查询db来判断用户是否有权限.但是如下情景不能够解决: 1.随着系统的复杂,权限较为复杂的时候,权限条目也多,系统角色 ...
- Jmeter之集合点与关联
在Jmeter中,实现类似于LoadRunner中集合点的方法是采用同步定时器(Synchronizing Timer),而实现类似于LoadRunner中关联的方法是采用正则表达式提取器. 一.集合 ...