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、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

转载于:https://www.cnblogs.com/daochong/p/7363649.html

lua的table库中的常用函数总结相关推荐

  1. c语言中math的库函数,C语言中math.h库中的常用函数

    C语言中math.h库中的常用函数 int abs(int i) 返回整型参数i的绝对值 double cabs(struct complex znum) 返回复数znum的绝对值 double fa ...

  2. php spl函数,PHP SPL标准库中的常用函数介绍

    这篇文章主要介绍了PHP SPL标准库中的常用函数介绍,本文着重讲解了spl_autoload_extensions().spl_autoload_register().spl_autoload()三 ...

  3. timm 视觉库中的 create_model 函数详解

    timm 视觉库中的 create_model 函数详解 最近一年 Vision Transformer 及其相关改进的工作层出不穷,在他们开源的代码中,大部分都用到了这样一个库:timm.各位炼丹师 ...

  4. json pandas 内存溢出_pandas中的常用函数

    Pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的.Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具. 近年随着大数据时代的到来,产生 ...

  5. Linux nm查看库中包含那些函数

    一.基本概念 1.1.什么是库        在 windows 平台和 linux 平台下都大量存在着库. 本质上来说库是一种可执行的二进制代码(但不可以独立执行),可以被操作系统载入内存执行. 由 ...

  6. C++STL中string的头文件中的常用函数

    文章目录 STL简介 头文件 初始化操作 实现效果 基本函数 1.size,length,capacity 2.resize,reserve 1,2的实现代码 实现效果 3.at,append,ins ...

  7. 【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 获取注入的 libbridge.so 动态库中的 load 函数地址 并 通过 远程调用 执行该函数 )

    文章目录 一.dlsym 函数简介 二.获取 目标进程 linker 中的 dlsym 函数地址 三.远程调用 目标进程 linker 中的 dlsym 函数 获取 注入的 libbridge.so ...

  8. 【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 远程调用 目标进程中 libc.so 动态库中的 mmap 函数 三 | 等待远程函数执行完毕 | 寄存器获取返回值 )

    文章目录 前言 一.等待远程进程 mmap 函数执行完毕 二.从寄存器中获取进程返回值 三.博客资源 前言 前置博客 : [Android 逆向]Android 进程注入工具开发 ( 注入代码分析 | ...

  9. 【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 远程调用 目标进程中 libc.so 动态库中的 mmap 函数 二 | 准备参数 | 远程调用 mmap 函数 )

    文章目录 一.准备 mmap 函数的参数 二.mmap 函数远程调用 一.准备 mmap 函数的参数 上一篇博客 [Android 逆向]Android 进程注入工具开发 ( 注入代码分析 | 远程调 ...

最新文章

  1. eclipse 关联 Maven本地仓库的配置
  2. 《面向对象分析与设计》一2.1 分析面临的主要问题
  3. ​清华来了第二位菲尔兹奖得主,是丘成桐力荐的老朋友Caucher Birkar
  4. python dataframe groupby_【Python数据分析基础】入坑必备的数据预处理操作
  5. 随机对照试验设计的原理
  6. 深入理解display属性
  7. 设置成员操作符--inside
  8. Uva 1625 - Color Length(DP)
  9. HTML/CSS入门及基础
  10. 网络管理:超级详细Tcpdump 的用法
  11. Enterprise Library 缓存应用程序块快速入门
  12. GetAsyncKeyState() 0x8000
  13. 16. jQuery - 获取并设置 CSS 类
  14. 浏览器油猴插件Tampermonkey下载安装
  15. java实现计算器_java高级计算器的实现
  16. 深圳首个“别墅”旧改项目规划出炉:超45万㎡!华侨城操盘
  17. Linux下清理日志及自动清理
  18. 刘銮雄-公道不在人心,是非只在时势
  19. php学习报告_论坛PHP报告
  20. echarts地图省份按顺序依次高亮demo(源码)

热门文章

  1. 表格存储Tablestore权威指南(持续更新)
  2. 微信小程序开发问题汇总
  3. HDU1012 Calculate e
  4. 你的php网页乱码了吗
  5. python读取数据库数据,读取出的中文乱码问题
  6. Installshield2010实现web部署和数据库安装示例
  7. Linux防火墙配置入门
  8. 大咖专栏 | DevOps组织如何有效地实施MSA
  9. redis安装、配置和启动
  10. 浏览器构造页面的原理