曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 2594|回复: 0
打印 上一主题 下一主题

table.sort 与 table.insert 示例

[复制链接]

4917

主题

5879

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34382
跳转到指定楼层
楼主
发表于 2014-12-27 13:29:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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 。





您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2024-4-28 09:48 , Processed in 0.078440 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表