04Table

01:table 的创建是通过"构造表达式"来完成,最简单构造表达式是{},用来创建一个空表。也可以在表里添加一些数据,直接初始化表

--创建一个空表
local table2={}
print(type(table2))

--初始化表
table2={1,2,5,8,89,8}

02:Lua 中的表(table)其实是一个"关联数组"(associative arrays),数组的索引可以是数字或者是字符串

a={}
--索引是string
a={key=1,key1=2}
print(a.key1)
print(a[2])

--索引是number
sum={"apple","pear","orange"}
for k ,v in pairs(a) do
print(k ..":"..v)
end

2
nil
key:1
key1:2

--添加数据
s={}
s.key="躺下后"
s["key1"]="555"
s[10]=100
print(s.key)
print(s[10])
--修改数据 覆盖
s.key=888
print(s.key)
--删除数据
s.key=nil
print(s.key)
2
nil
key:1
key1:2
躺下后
100
888
nil

03:不同于其他语言的数组把 0 作为数组的初始索引,在 Lua 里表的默认初始索引一般以 1 开始

local a={"1","2" ,"3" ,"4"}
for k,v in pairs(a) do
print(k..":"..v)
end

1:1
2:2
3:3
4:4

04:table 不会固定长度大小,有新数据添加时 table 长度会自动增长,没初始的 table 都是 nil

table2={} --空表
print(type(table2))
table2={5,6,8,4}
for k,v in pairs(table2) do
print(k..":"..v)
end

table3={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) do
print(k,v)
end
1	20000
2	1
3	2
4	3
5	4
6	5
local array = {1, 2, 3, 4, 5}
table.insert(array,  20000)
for k ,v in pairs(array) do
print(k,v)
end
1	1
2	2
3	3
4	4
5	5
6	20000

从数组中删除元素 table.remove(数组名,键)
–table.remove(数组名) 默认删除最后一个元素

local array = {1, 2, 3, 4, 5}

table.remove(array,1);
for k,v in pairs(array) do
print(v);
end
2
3
4
5
local array = {1, 2, 3, 4, 5}

table.remove(array);
for k,v in pairs(array) do
print(v);
end
1
2
3
4

06.table.sort()函数
table.sort(数组,排序规则) 升序排序

local array = {10, 20, 3, 4, 5}
table.sort(array);
for k,v in pairs(array) do
print(v);
end
3
4
5
10
20

07.创建自己函数的表来作为自己的函数库
表中存储函数


local array={};
array.fun1=function()
print("数学学起来很难");
end
array.fun2=function()
print("语文学起来很容易");
end

array.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 返回最大数字key

local 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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值