lua table

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

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

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

> tbl = {"alpha", "beta", "gamma"}

> print(table.concat(tbl, ":"))

alpha:beta:gamma

> print(table.concat(tbl, nil, 1, 2))

alphabeta

> print(table.concat(tbl, "\n", 2, 3))

beta

gamma

table.insert(table, pos, value)

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

> tbl = {"alpha", "beta", "gamma"}

> table.insert(tbl, "delta")

> table.insert(tbl, "epsilon")

> print(table.concat(tbl, ", ")

alpha, beta, gamma, delta, epsilon

> table.insert(tbl, 3, "zeta")

> print(table.concat(tbl, ", ")

alpha, beta, zeta, gamma, delta, epsilon

table.maxn(table)

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

> tbl = {[1] = "a", [2] = "b", [3] = "c", [26] = "z"}

> print(#tbl)

3?????????????? -- 因為26和之前的數(shù)字不連續(xù), 所以不算在數(shù)組部分內

> print(table.maxn(tbl))

26

> tbl[91.32] = true

> print(table.maxn(tbl))

91.32

table.remove(table, pos)

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

table.sort(table, comp)

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

> tbl = {"alpha", "beta", "gamma", "delta"}

> table.sort(tbl)

> print(table.concat(tbl, ", "))

alpha, beta, delta, gamma

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

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

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

> sortFunc = function(a, b) return b < a end

> table.sort(tbl, sortFunc)

> print(table.concat(tbl, ", "))

gamma, delta, beta, alpha

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

guild = {}

table.insert(guild, {

name = "Cladhaire",

class = "Rogue",

level = 70,

})

table.insert(guild, {

name = "Sagart",

class = "Priest",

level = 70,

})

table.insert(guild, {

name = "Mallaithe",

class = "Warlock",

level = 40,

})

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

可以寫出這樣的排序函數(shù):

function sortLevelNameAsc(a, b)

if a.level == b.level then

return a.name < b.name

else

return a.level < b.level

end

end

測試功能如下:

> table.sort(guild, sortLevelNameAsc)

> for idx, value in ipairs(guild) do print(idx, value.name) end

1, Mallaithe

2, Cladhaire

3, Sagart

table.foreachi(table, function(i, v))

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

t1 = {2, 4, 6, language="Lua", version="5", 8, 10, 12, web="hello lua"};

table.foreachi(t1, function(i, v) print (i, v) end)?; --等價于foreachi(t1, print)

輸出結果:

1?2

2?4

3?6

4?8

5?10

6?12

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

2?4

3?6

4?8

5?10

6?12

web?hello lua

language?Lua

version?5

table.getn(table)

返回table中元素的個數(shù)

t1 = {1, 2, 3, 5};

print(getn(t1))

->4

table.setn(table, nSize)

設置table中的元素個數(shù)


local function sort( a, b )

? ? ? ? return a.wOrder < b.wOrder

end

table.sort( tab, sort )

-- 對 類型 wOrder 進行排序

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末誊役,一起剝皮案震驚了整個濱河市篙议,隨后出現(xiàn)的幾起案子癞松,更是在濱河造成了極大的恐慌峦嗤,老刑警劉巖院水,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件腊徙,死亡現(xiàn)場離奇詭異,居然都是意外死亡檬某,警方通過查閱死者的電腦和手機撬腾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來恢恼,“玉大人民傻,你說我怎么就攤上這事√梗” “怎么了饰潜?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我亡电,道長省古,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任薯酝,我火速辦了婚禮半沽,結果婚禮上,老公的妹妹穿的比我還像新娘吴菠。我一直安慰自己者填,他們只是感情好,可當我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布做葵。 她就那樣靜靜地躺著占哟,像睡著了一般。 火紅的嫁衣襯著肌膚如雪酿矢。 梳的紋絲不亂的頭發(fā)上榨乎,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天,我揣著相機與錄音瘫筐,去河邊找鬼蜜暑。 笑死,一個胖子當著我的面吹牛策肝,可吹牛的內容都是我干的肛捍。 我是一名探鬼主播,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼之众,長吁一口氣:“原來是場噩夢啊……” “哼拙毫!你這毒婦竟也來了?” 一聲冷哼從身側響起酝枢,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤恬偷,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后帘睦,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體袍患,經...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年竣付,在試婚紗的時候發(fā)現(xiàn)自己被綠了诡延。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡古胆,死狀恐怖肆良,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情逸绎,我是刑警寧澤惹恃,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站棺牧,受9級特大地震影響巫糙,放射性物質發(fā)生泄漏。R本人自食惡果不足惜颊乘,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一参淹、第九天 我趴在偏房一處隱蔽的房頂上張望醉锄。 院中可真熱鬧,春花似錦浙值、人聲如沸恳不。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽烟勋。三九已至,卻和暖如春负蚊,著一層夾襖步出監(jiān)牢的瞬間神妹,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工家妆, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人冕茅。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓伤极,卻偏偏與公主長得像,于是被迫代替她去往敵國和親姨伤。 傳聞我的和親對象是個殘疾皇子哨坪,可洞房花燭夜當晚...
    茶點故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內容

  • lua中,萬物化table乍楚,table生萬物当编,哈哈哈哈,好像很厲害徒溪。 問題的由來: 之前想寫一個table排序忿偷,按...
    西瓜教主閱讀 1,073評論 0 0
  • 這個庫提供了表處理的通用函數(shù)。 所有函數(shù)都放在表 table臊泌。無論何時鲤桥,若一個操作需要取表的長度, 這張表必須是一...
    chiguozi閱讀 819評論 0 1
  • 前言# 從前有一個table叫table渠概,說起來挺有意思的茶凳,其實在lua的世界里確實有一個名字叫做table的ta...
    AlbertS閱讀 30,598評論 2 7
  • table 是 Lua 的一種數(shù)據結構用來幫助我們創(chuàng)建不同的數(shù)據類型,如:數(shù)字播揪、字典等贮喧。 Lua table 使用...
    誰說我是小小云閱讀 1,227評論 0 0
  • 1、在lua里打亂Table的順序 for i table.sort(guildStartPoints,funct...
    串串香閱讀 3,667評論 0 0