lua的table庫中的經常使用函數總結

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}
  • 1
  • 2
  • 1
  • 2

t的結果將是{4, 1, 2, 3} 
舉例2:spring

t={};
table.insert(t,"a"); table.insert(t,"b"); table.insert(t,"c");
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

結果是: 

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
  • 2
  • 1
  • 2

結果: 
排序前: 

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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

結果以下: 
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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

結果以下: 
一: 衆裏尋他千百度,驀然回首,那人卻在燈火闌珊處 
二: 衆裏尋他千百度,驀然回首 
三: 
衆裏尋他千百度 
驀然回首 
那人卻在燈火闌珊處 
大小比較: 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
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

結果: 

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)) 
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

結果以下: 


%———————————————————————————————————-%

5、table.getn() 
含義:返回table中元素的個數 
舉例:

t1 = {1, 2, 3, 5} print(getn(t1))
  • 1
  • 2
  • 1
  • 2

結果:4 
%———————————————————————————————————-%

六、table.pack()和table.unpack() 
table.pack函數是獲取一個索引從 1 開始的參數表 table,並會對這個 table 預約義一個字段 n,表示該表的長度。 
舉例:

t = table.pack("test", "param1", "param2", "param3") print(t)
  • 1
  • 2
  • 1
  • 2

結果: 

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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

結果以下: 
(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

相關文章
相關標籤/搜索