本文共 2440 字,大约阅读时间需要 8 分钟。
01:table 的创建是通过"构造表达式"来完成,最简单构造表达式是{},用来创建一个空表。也可以在表里添加一些数据,直接初始化表
--创建一个空表local table2={}print(type(table2))--初始化表table2={1,2,5,8,89,8}
02:Lua 中的表(table)其实是一个"关联数组"(associative arrays),数组的索引可以是数字或者是字符串
a={}--索引是stringa={key=1,key1=2}print(a.key1)print(a[2])--索引是numbersum={"apple","pear","orange"}for k ,v in pairs(a) doprint(k ..":"..v)end2nilkey:1key1:2
--添加数据s={}s.key="躺下后"s["key1"]="555"s[10]=100print(s.key)print(s[10])--修改数据 覆盖s.key=888print(s.key)--删除数据s.key=nilprint(s.key)2nilkey:1key1:2躺下后100888nil
03:不同于其他语言的数组把 0 作为数组的初始索引,在 Lua 里表的默认初始索引一般以 1 开始
local a={"1","2" ,"3" ,"4"}for k,v in pairs(a) doprint(k..":"..v)end1:12:23:34:4
04:table 不会固定长度大小,有新数据添加时 table 长度会自动增长,没初始的 table 都是 nil
table2={} --空表print(type(table2))table2={5,6,8,4}for k,v in pairs(table2) doprint(k..":"..v)endtable3={key1=22,key2=66}print(table3.key1)print(table3["key1"])--1:5--2:6--3:8--4:4--22--22
04.表的插入
table.insert(arrar, index, value); table.insert(数组,键,值) – 下面添加 键为index的值,如果原来数组中有键为index的值依次向后从新排列。 – 如果我们省略了键,只填入数组名 和 值,就会默认把新添加的值放入数组的最后一位。local array = { 1, 2, 3, 4, 5}table.insert(array, 1, 20000)for k ,v in pairs(array) doprint(k,v)end1 200002 13 24 35 46 5
local array = { 1, 2, 3, 4, 5}table.insert(array, 20000)for k ,v in pairs(array) doprint(k,v)end1 12 23 34 45 56 20000
从数组中删除元素 table.remove(数组名,键)
–table.remove(数组名) 默认删除最后一个元素local array = { 1, 2, 3, 4, 5}table.remove(array,1);for k,v in pairs(array) doprint(v);end2345
local array = { 1, 2, 3, 4, 5}table.remove(array);for k,v in pairs(array) doprint(v);end1234
06.table.sort()函数
table.sort(数组,排序规则) 升序排序local array = { 10, 20, 3, 4, 5}table.sort(array);for k,v in pairs(array) doprint(v);end3451020
07.创建自己函数的表来作为自己的函数库
表中存储函数local array={ };array.fun1=function()print("数学学起来很难");endarray.fun2=function()print("语文学起来很容易");endarray.fun1();array.fun2();数学学起来很难语文学起来很容易
08.table.concat
local string_concat = { "string", "int", "char", "float", "double"};print(table.concat(string_concat));stringintcharfloatdouble
local string_concat = { "string", "int", "char", "float", "double"};print(table.concat(string_concat,"|"));string|int|char|float|double
原型:table.maxn (tab_table)
解释:返回一个表tab_table中的最大正数索引,如果没有正数索引的话返回0。 maxn 返回最大数字keylocal array = { 10, 20, 3, 400, 1,2};local max=table.maxn(array);print(max);6
a={ 1,3,a='b',[6]='six',[10]='ten'}local max=table.maxn(a);print(max);10
a={ a='b','six','ten'}local max=table.maxn(a);print(max);0
转载地址:http://znrxo.baihongyu.com/