lua的table库中的常用函数总结
table是Lua语言中的一种重要的数据类型, table 的一些特性简单列举如下:
(1).table 是一个“关联数组”,数组的索引可以是数字或者是字符串;
(2).table 的默认初始索引一般以 1 开始;
(3).table 的变量只是一个地址引用,对 table 的操作不会产生数据影响;
(4).table 不会固定长度大小,有新数据插入时长度会自动增长;
(5).table 所有索引值都需要用 “[“和”]” 括起来;如果是字符串,还可以去掉引号和中括号; 即如果没有[]括起,则认为是字符串索引;
(6).table 所有元素之间,总是用逗号 “,” 隔开;
lua提供了一些辅助函数来操作table,例如insert、remove等。
%———————————————————————————————————-%
1、table.insert and table.remove
table.insert将一个元素插入到指定位置:。
举例1:
t = {1, 2, 3}
table.insert(t, 1, 4}
- 1
- 2
- 1
- 2
t的结果将是{4, 1, 2, 3}
举例2:
t={};
table.insert(t,"a");
table.insert(t,"b");
table.insert(t,"c");
- 1
- 2
- 3
- 4
- 1
- 2
- 3
- 4
结果是:
{
1 : a
2 : b
3 : c
}
insert的第二个参数是可以省略的,这样就会插入到数组的最后,从而不必移动其他元素。
同样地,table.remove是从数组中移除(并返回)一个元素,table.remove(t,1)将移除t中下标是1的元素,如果不指定移除位置,则移除最后一个。
%———————————————————————————————————-%
2、table.sort()
另一个有用的函数是sort,对数组进行排序,如果没有提供排序函数,默认是<操作。这里不仅仅是数,对字符串也有效。
举例1:
a = {1,3,2,6,4,8,7,5} print('排序前:',a)
table.sort(a) print('排序后:',a)
- 1
- 2
- 1
- 2
结果:
排序前:
{
1 : 1
2 : 3
3 : 2
4 : 6
5 : 4
6 : 8
7 : 7
8 : 5
}
排序后:
{
1 : 1
2 : 2
3 : 3
4 : 4
5 : 5
6 : 6
7 : 7
8 : 8
}
举例2:
name = {"you" ,"me", "him","bill" }
--table.sort - only works with arrays!
table.sort(name)
for k, v in ipairs( name) do
print( k,v)
end
- 1
- 2
- 3
- 4
- 5
- 6
- 1
- 2
- 3
- 4
- 5
- 6
结果如下:
1 bill
2 him
3 me
4 you
%———————————————————————————————————-%
3、table.concat()
格式:table.concat(table, sep, start, end)
concat()函数列出参数中指定table的数组部分从start位置到end位置的所有元素, 元素间以指定的分隔符(sep)隔开。除了table外, 其他的参数都不是必须的, 分隔符的默认值是空字符, start的默认值是1, end的默认值是数组部分的总长。
举例:
spring = {"众里寻他千百度", "蓦然回首", "那人却在灯火阑珊处"}
print('一:',table.concat(spring, ","))
print('二:',table.concat(spring, ",",1,2))
print('三:\n',table.concat(spring, "\n",1,3))
num = {1 ,2, 3,4,5 ,6}
print('大小比较:',table.concat (num ,"<"))
- 1
- 2
- 3
- 4
- 5
- 6
- 1
- 2
- 3
- 4
- 5
- 6
结果如下:
一: 众里寻他千百度,蓦然回首,那人却在灯火阑珊处
二: 众里寻他千百度,蓦然回首
三:
众里寻他千百度
蓦然回首
那人却在灯火阑珊处
大小比较: 1<2<3<4<5<6
%———————————————————————————————————-%
4、table.maxn()
含义:table.maxn()函数返回指定table中所有正数key值中最大的key值。 如果不存在key值为正数的元素, 则返回0。 此函数不限于table的数组部分。
举例1:
cc = { 0.2654,0.0109, 0.3575, 0.8749, 0.4324,0.1932}
print(cc)
key = table.maxn(cc)
print('最大的key值为:',key)
- 1
- 2
- 3
- 4
- 1
- 2
- 3
- 4
结果:
{
1 : 0.2654
2 : 0.0109
3 : 0.3575
4 : 0.8749
5 : 0.4324
6 : 0.1932
}
最大的key值为: 6
举例2:
apple = {"a" ,"p",[5]="e"}
print(table.maxn(apple))
duck = {[-2]=3,[-1]=0}
print(table.maxn(duck))
- 1
- 2
- 3
- 4
- 1
- 2
- 3
- 4
结果如下:
5
0
%———————————————————————————————————-%
5、table.getn()
含义:返回table中元素的个数
举例:
t1 = {1, 2, 3, 5}
print(getn(t1))
- 1
- 2
- 1
- 2
结果:4
%———————————————————————————————————-%
6、table.pack()和table.unpack()
table.pack函数是获取一个索引从 1 开始的参数表 table,并会对这个 table 预定义一个字段 n,表示该表的长度。
举例:
t = table.pack("test", "param1", "param2", "param3")
print(t)
- 1
- 2
- 1
- 2
结果:
{
1 : test
2 : param1
3 : param2
4 : param3
n : 4
}
table.unpack函数用于返回 table 里的元素,用法:table.unpack(table, start, end),其中参数 start 是开始返回的元素位置,默认是 1,参数 end 是返回最后一个元素的位置,默认是 table 最后一个元素的位置,参数 start、end 都是可选
举例:
t = {"Lua", "C++", "Python", "Java"}
print('(1):\n',t)
print('(2):',table.unpack(t))
a, b, c, d = table.unpack(t)
print('(3):',b)
print('(4):',a, b, c, d)
print('(5):',table.unpack(t, 2))
print('(6):',table.unpack(t, 2, 3))
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
结果如下:
(1):
{
1 : Lua
2 : C++
3 : Python
4 : Java
}
(2): Lua C++ python Java
(3): C++
(4): Lua C++ Python Java
(5): C++ Python Java
(6): C++ Python
lua的table库中的常用函数总结的更多相关文章
- numpy函数库中一些常用函数的记录
##numpy函数库中一些常用函数的记录 最近才开始接触Python,python中为我们提供了大量的库,不太熟悉,因此在<机器学习实战>的学习中,对遇到的一些函数的用法进行记录. (1) ...
- lua的table库中经常使用的函数
lua提供了一些辅助函数来操作table. 比如,从list中insert和remove元素,对array的元素进行sort.或者concatenate数组中的全部strings.以下就具体地解说这些 ...
- Mysql中的常用函数:
Mysql中的常用函数: 1.字符串函数: (1).合并字符串 concat():// concat('M','y',"SQL",'5.5');== MySQL5.5//当传入的参 ...
- socket编程中客户端常用函数
1 常用函数 1.1 connect() int connect(int sockfd, const struct sockaddr *servaddr, socklen_taddrlen); 客 ...
- Lua中的常用函数库汇总
lua库函数 这些函数都是Lua编程语言的一部分, 点击这里了解更多. assert(value) - 检查一个值是否为非nil, 若不是则(如果在wow.exe打开调试命令)显示对话框以及输出错误调 ...
- Lua 之table库
标准table库 table.concat(table, sep, start, end) concat是concatenate(连锁, 连接)的缩写,table.concat()函数列出参数中指定 ...
- Lua整理——table库
table属性 table库是有一些辅助函数构成的,这些函数将table作为数组来操作. 当中.有对列表中插入和删除元素的函数,有对数组元素进行排序的函数.还有对链接一个数组中全部字符串的函数. 0. ...
- C++中string常用函数用法总结
string(s小写)是C++标准库中的类,纯C中没有,使用时需要包含头文件#include<string>,注意不是<string.h>,下面记录一下string中比较常用的 ...
- PHP自学4——通过函数将数组数据输出到html的Table标签中(使用函数的例子)
这一节其实说实话并没有什么干货,不过为了防止PO主的懒癌的复发,还是坚持放一点东西,即使是内容和长度都令人发指.这一节通过一个函数来实现将数组中的内容输出html的Table标签当中显示. 函数文件— ...
随机推荐
- hdu 6074 Phone Call
题 O∧O http://acm.hdu.edu.cn/showproblem.php?pid=6074 2017 Multi-University Training Contest - Team 4 ...
- 关于单片机特殊功能寄存器(SFR)和内存(RAM)公用地址:80-FF 如何区分
RAM 的 80-FF 需要间接寻址进行访问 如: MOV R0,#80H; MOV A,@R0 ; (内存 80H地址内的数据放到A中) SFR的80-FF需要直接寻址进行访问如: MOV ...
- 2、创建MFC应用程序——基于对话框,时间计时器
使用计时器更新MFC界面时间,频率1s. 文件——新建项目——MFC应用程序,下一步,选择基于对话框,其他默认,完成. 双击窗体(或者鼠标右键)进入类向导,自动创建Ontimer()函数 void C ...
- BOOTING ELOQUENT MODEL TRAITS
BOOTING ELOQUENT MODEL TRAITS So I've learnt a little Laravel/Eloquent trick today that is very much ...
- 2019CCPC秦皇岛自我反省&部分题解
练了一年半了,第一次打CCPC,险些把队友坑了打铁,最后也是3题危险捡了块铜. 非常水的点双连通,我居然不相信自己去相信板子,唉,结果整来整去,本来半个小时能出的题,整到了3个小时,大失误呀,不然就可 ...
- 浏览器事件循环机制(event loop)
JS是单线程的 JS是单线程的,或者说只有一个主线程,也就是它一次只能执行一段代码.JS中其实是没有线程概念的,所谓的单线程也只是相对于多线程而言.JS的设计初衷就没有考虑这些,针对JS这种不具备并行 ...
- springboot+shiro 跨域解决(OPTIONS)
拦截器判断 拦截器截取到请求先进行判断,如果是OPTIONS请求的话,则放行 import com.alibaba.fastjson.JSON; import com.zp.demo.util.Jwt ...
- Leetcode题目48.旋转图像(中等)
题目描述: 给定一个 n × n 的二维矩阵表示一个图像. 将图像顺时针旋转 90 度. 说明: 你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵.请不要使用另一个矩阵来旋转图像. 示例 1 ...
- cast()、decimal(M,D) --SQL对查询字段保留小数位操作
参考:http://database.51cto.com/art/201005/201651.htm http://www.lai18.com/content/1693593.html 直接上例子,以 ...
- HearthBuddy中_settings.txt的更详细参数解释
https://tieba.baidu.com/p/5275382967 默认的配置不是很合理,花了点时间读了下silverfish(也就是兄弟用的AI)的代码后也尝试修改了些参数,有没有效果仁者见仁 ...