精華區beta mud_sanc 關於我們 聯絡資訊
table.sort (table [, comp]) 說明:將表中的值按comp提供的函數進行排序,預設comp為Lua控制字元,comp 為lua函數,當參數1小於參數2時回傳true,否則回傳false。 範例: > tbl = {"alpha", "beta", "gamma", "delta"} > table.sort(tbl) > print(table.concat(tbl, ", ")) alpha, beta, delta, gamma comp是一個可選的參數,此參數是一個外部函數,可以用來自定義sort函數的排 序標準。 此函數應滿足以下條件:接受兩個參數(依次為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 用類似的原理還可以寫出更加複雜的排序函數。例如, 有一個table存有工會三名成員的姓名及等級信息: guild = {} table.insert(guild, {  name = "Cladhaire",  class = "Rogue",  level = 70, }) table.insert(guild, {  name = "Sagart",  class = "Priest",  level = 70, })  name = "Mallaithe",  class = "Warlock",  level = 40, }) 對這個table進行排序時,應用以下的規則:按等級升序排序,在等級相同時, 按姓名升序排序: 可以寫出這樣的排序函數: 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