天天看點

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