table是Lua語言中的一種重要的數據類型, table 的一些特性簡單列舉以下:
(1).table 是一個「關聯數組」,數組的索引能夠是數字或者是字符串;
(2).table 的默認初始索引通常以 1 開始;
(3).table 的變量只是一個地址引用,對 table 的操做不會產生數據影響;
(4).table 不會固定長度大小,有新數據插入時長度會自動增加;
(5).table 全部索引值都須要用 「[「和」]」 括起來;若是是字符串,還能夠去掉引號和中括號; 即若是沒有[]括起,則認爲是字符串索引;
(6).table 全部元素之間,老是用逗號 「,」 隔開;java
lua提供了一些輔助函數來操做table,例如insert、remove等。
%———————————————————————————————————-%
1、table.insert and table.remove
table.insert將一個元素插入到指定位置:。
舉例1:python
t = {1, 2, 3} table.insert(t, 1, 4}
t的結果將是{4, 1, 2, 3}
舉例2:spring
t={};
table.insert(t,"a"); table.insert(t,"b"); table.insert(t,"c");
結果是:
{
1 : a
2 : b
3 : c
}
insert的第二個參數是能夠省略的,這樣就會插入到數組的最後,從而沒必要移動其餘元素。
一樣地,table.remove是從數組中移除(並返回)一個元素,table.remove(t,1)將移除t中下標是1的元素,若是不指定移除位置,則移除最後一個。
%———————————————————————————————————-%sql
2、table.sort()
另外一個有用的函數是sort,對數組進行排序,若是沒有提供排序函數,默認是<操做。這裏不單單是數,對字符串也有效。
舉例1:數組
a = {1,3,2,6,4,8,7,5} print('排序前:',a) table.sort(a) print('排序後:',a)
結果:
排序前:
{
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:app
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 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的默認值是數組部分的總長。
舉例:ui
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
%———————————————————————————————————-%lua
四、table.maxn()
含義:table.maxn()函數返回指定table中全部正數key值中最大的key值。 若是不存在key值爲正數的元素, 則返回0。 此函數不限於table的數組部分。
舉例1:spa
cc = { 0.2654,0.0109, 0.3575, 0.8749, 0.4324,0.1932} print(cc) key = table.maxn(cc) print('最大的key值爲:',key)
結果:
{
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))
結果以下:
5
0
%———————————————————————————————————-%
5、table.getn()
含義:返回table中元素的個數
舉例:
t1 = {1, 2, 3, 5} print(getn(t1))
結果:4
%———————————————————————————————————-%
六、table.pack()和table.unpack()
table.pack函數是獲取一個索引從 1 開始的參數表 table,並會對這個 table 預約義一個字段 n,表示該表的長度。
舉例:
t = table.pack("test", "param1", "param2", "param3") print(t)
結果:
{
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):
{
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