成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淺析Lua中關于Table函數庫

移動開發 iOS
Lua中關于Table函數庫是本文要介紹的內容,主要是來學習Table函數庫在lua中如何使用,具體來看本文詳解。一部分的table函數只對其數組部分產生影響, 而另一部分則對整個table均產生影響.

Lua中關于Table函數庫是本文要介紹的內容,主要是來學習Table函數庫在lua中如何使用,具體來看本文詳解。一部分的table函數只對其數組部分產生影響, 而另一部分則對整個table均產生影響. 下面會分開說明.

  1. table.concat(table, sep,  start, end) 

concat是concatenate(連鎖, 連接)的縮寫. table.concat()函數列出參數中指定table的數組部分從start位置到end位置的所有元素, 元素間以指定的分隔符(sep)隔開。除了table外, 其他的參數都不是必須的, 分隔符的默認值是空字符, start的默認值是1, end的默認值是數組部分的總長.

sep, start, end這三個參數是順序讀入的, 所以雖然它們都不是必須參數, 但如果要指定靠后的參數, 必須同時指定前面的參數.

  1. > tbl = {"alpha", "beta", "gamma"}  
  2. > print(table.concat(tbl, ":"))  
  3. alpha:beta:gamma  
  4. > print(table.concat(tbl, nil, 1, 2))  
  5. alphabeta  
  6. > print(table.concat(tbl, "\n", 2, 3))  
  7. beta  
  8. gamma  
  9. table.insert(table, pos, value)  

table.insert()函數在table的數組部分指定位置(pos)插入值為value的一個元素. pos參數可選, 默認為數組部分末尾.

  1. > tbl = {"alpha", "beta", "gamma"}  
  2. > table.insert(tbl, "delta")  
  3. > table.insert(tbl, "epsilon")  
  4. > print(table.concat(tbl, ", ")  
  5. alpha, beta, gamma, delta, epsilon  
  6. > table.insert(tbl, 3, "zeta")  
  7. > print(table.concat(tbl, ", ")  
  8. alpha, beta, zeta, gamma, delta, epsilon  
  9. table.maxn(table)  

table.maxn()函數返回指定table中所有正數key值中***的key值. 如果不存在key值為正數的元素, 則返回0. 此函數不限于table的數組部分.

  1. > tbl = {[1] = "a", [2] = "b", [3] = "c", [26] = "z"}  
  2. > print(#tbl)  
  3. 3               -- 因為26和之前的數字不連續, 所以不算在數組部分內  
  4. > print(table.maxn(tbl))  
  5. 26  
  6. > tbl[91.32] = true  
  7. > print(table.maxn(tbl))  
  8. 91.32  
  9. table.remove(table, pos)  

table.remove()函數刪除并返回table數組部分位于pos位置的元素. 其后的元素會被前移. pos參數可選, 默認為table長度, 即從***一個元素刪起.

  1. table.sort(table, comp)  

table.sort()函數對給定的table進行升序排序.

  1. > tbl = {"alpha", "beta", "gamma", "delta"}  
  2. > table.sort(tbl)  
  3. > print(table.concat(tbl, ", "))  
  4. alpha, beta, delta, gamma 

comp是一個可選的參數, 此參數是一個外部函數, 可以用來自定義sort函數的排序標準.

此函數應滿足以下條件: 接受兩個參數(依次為a, b), 并返回一個布爾型的值, 當a應該排在b前面時, 返回true, 反之返回false.

例如, 當我們需要降序排序時, 可以這樣寫:

  1. > sortFunc = function(a, b) return b < a end  
  2. > table.sort(tbl, sortFunc)  
  3. > print(table.concat(tbl, ", "))  
  4. gamma, delta, beta, alpha 

用類似的原理還可以寫出更加復雜的排序函數. 例如, 有一個table存有工會三名成員的姓名及等級信息:

  1. guild = {}  
  2.  
  3. table.insert(guild, {  
  4.  name = "Cladhaire",  
  5.  class = "Rogue",  
  6.  level = 70,  
  7. })  
  8.  
  9. table.insert(guild, {  
  10.  name = "Sagart",  
  11.  class = "Priest",  
  12.  level = 70,  
  13. })  
  14.  
  15. table.insert(guild, {  
  16.  name = "Mallaithe",  
  17.  class = "Warlock",  
  18.  level = 40,  
  19. }) 

對這個table進行排序時, 應用以下的規則: 按等級升序排序, 在等級相同時, 按姓名升序排序.

可以寫出這樣的排序函數:

  1. function sortLevelNameAsc(a, b)  
  2.  if a.level == b.level then  
  3.   return a.name < b.name 
  4.  else  
  5.   return a.level < b.level 
  6.  end  
  7. end 

測試功能如下:

  1. table.sort(guild, sortLevelNameAsc)  
  2.  for idx, value in ipairs(guild) do print(idx, value.name) end  
  3. 1, Mallaithe  
  4. 2, Cladhaire  
  5. 3, Sagart  
  6. table.foreachi(table, function(i, v)) 

會期望一個從 1(數字 1)開始的連續整數范圍,遍歷table中的key和value逐對進行function(i, v)操作

  1. t1 = {2, 4, 6, language="Lua"version="5", 8, 10, 12, web="hello lua"};  
  2. table.foreachi(t1, function(i, v) print (i, v) end) ; --等價于foreachi(t1, print) 

輸出結果:

  1. 1 2  
  2. 2 4  
  3. 3 6  
  4. 4 8  
  5. 5 10  
  6. 6 12  
  7. table.foreach(table, function(i, v)) 

與foreachi不同的是,foreach會對整個表進行迭代

t1 = {2, 4, 6, language="Lua", version="5", 8, 10, 12, web="hello lua"};
table.foreach(t1, function(i, v) print (i, v) end) ;

輸出結果:

  1. 1 2  
  2. 2 4  
  3. 3 6  
  4. 4 8  
  5. 5 10  
  6. 6 12  
  7. web hello lua  
  8. language Lua  
  9. version 5  
  10. table.getn(table) 

返回table中元素的個數

  1. t1 = {1, 2, 3, 5};  
  2. print(getn(t1))  
  3. ->4  
  4. table.setn(table, nSize) 

設置table中的元素個數。

小結:關于淺析Lua中關于Table函數庫的內容介紹完了,希望通過本文的學習能對你有所幫助!

責任編輯:zhaolei 來源: 博客園
相關推薦

2011-08-23 14:26:07

Lua字符串

2011-08-23 16:14:27

Lua函數庫函數

2009-09-16 10:43:22

PHP正則表達式函數

2009-09-17 13:15:12

NIS函數庫

2011-08-23 10:29:13

LuaPlayer

2010-04-27 09:55:15

2011-08-23 16:37:05

Lua數學庫

2011-08-23 16:22:45

Lua 4.0函數

2009-12-08 19:34:26

PHP拼寫檢查函數庫

2011-08-22 17:13:00

LuaC++函數

2011-08-23 16:48:41

Lua 5.1API 函數

2020-11-16 12:40:55

Java開發機器學習

2010-06-13 10:18:08

MySQL 數據庫函數

2011-08-23 17:33:08

LuaMetatable

2014-01-07 14:53:37

Android開發依賴注入Roboguice

2009-11-16 15:07:23

PHP數組函數庫

2021-07-10 07:41:20

Python中文函數庫Python基礎

2011-08-23 14:33:51

Lua捕獲字符串

2011-08-24 17:09:35

LUA閉包函數

2011-08-25 17:01:50

LUA網游游戲
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 在线三级电影 | 欧美日韩一区在线 | 精品欧美乱码久久久久久 | 精品一区二区久久久久久久网站 | 日韩av免费看 | 午夜一区 | 日韩精品一区二区三区在线观看 | 成人天堂噜噜噜 | 欧美一区二区另类 | 91在线视频观看免费 | 伊人网站 | 国产精品免费视频一区 | av影音资源 | 午夜免费网站 | 最新国产视频 | 国产一区二区在线免费视频 | 亚洲三区在线观看 | 久久精品国产久精国产 | 91在线一区二区 | 九七午夜剧场福利写真 | 1级毛片| 黄色小视频入口 | 中文字幕一区在线观看视频 | 国产一级一级毛片 | 日韩视频在线观看一区二区 | av三级在线观看 | 久久久91精品国产一区二区三区 | 中文字幕在线观看一区 | 97精品国产手机 | 男人的天堂久久 | 久久久www成人免费无遮挡大片 | 伊人网站视频 | 国产免费一区 | 国产精品美女久久久 | 久久综合狠狠综合久久 | 一区二区三区四区视频 | 日韩欧美一二三区 | 亚洲男人天堂av | 欧美日韩专区 | 91视频国产一区 | 国产精品久久久久久吹潮 |