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