曲径通幽论坛

标题: table.sort 与 table.insert 示例 [打印本页]

作者: beyes    时间: 2014-12-27 13:29
标题: table.sort 与 table.insert 示例
table.sort 用来对 table 进行排序。
table.insert 将元素插入 table 中。

table.sort 简单示例代码:
  1. T = {4, 5, 10, 15}

  2. table.sort(T, function(A, B) return not (A < B) end)

  3. for _, kil in ipairs(T) do
  4.         print (kil)       
  5. end
复制代码

输出:
15
10
4
5

table.sort 的第 1 个参数是要进行排序的 table,第 2 个参数是个比对函数,可以是匿名函数;如果返回写成 return (A < B),那么将元素从小到大排序;如果返回写成 return (A > B),那么将元素从大到小排序;如果在返回表达式前使用关键字 not,那么按照相反次序排序。

需要注意的是,table.sort 并没有返回一个排好序的 table 副本,而是对原来的 table 进行排序。

下面的例子中包含了 table.sort 和 table.insert 的示例:
  1. NameToInstr =  { John = "rhythm guitar",
  2.                                  Paul = "lead guitar",
  3.                                  George = "lead guitar",
  4.                                  Ringo = "drumkit"
  5.                            }
  6.                        
  7. Sorted = {}

  8. for Name, Instr in pairs(NameToInstr) do
  9.         table.insert(Sorted, {Name = Name, Instr = Instr})
  10. end

  11. table.sort(Sorted, function(A, B) return A.Name < B.Name end)

  12. for _, NameInstr in ipairs(Sorted) do
  13.         print(NameInstr.Name .. " played " .. NameInstr.Instr)
  14. end
复制代码

运行输出:
George played lead guitar
John played rhythm guitar
Paul played lead guitar
Ringo played drumkit


table.insert 的用法是 table.insert(Arr, Val),它将 Val 插入到 Arr 最后一个元素的下一个位置处,因此相当于 Arr[#Arr + 1] = Val 。










欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2