• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Lua 表的排序,table.sort应用

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

       最近项目使用到表的排序,我使用table.sort通过表的value排序,使用key进行排序暂未研究。之前一直不是很清楚table.sort这个方法,刚好有机会记录一下。

方法原型:table.sort (table, funtion(a,b))

两个入参:1.table-----------需要排序的table

                  2.function-------排序方法,可自定义。如果不填,则按默认排序。形式是固定的,入参a,b为排序table中的value1、value2....(这个具体不知道怎么描述)

 

1.不传排序方法,采用自定义:

结果:

可以看到,table.sort默认是使用table中存贮的 value进行从小到大的排序,有一点需要注意的是,如果table中含有number和string,使用默认的方法进行比较会报 number和string比较的错误。也有一些别的坑,使用的时候需要谨慎(默认的我用的比较少)

2.传入自定义的排序方法:

例如传入的table是 :

传入的方法的格式是固定的,也就是一个

匿名函数function(a,b)

               ........(你的实现)

              end

匿名函数中的a,b是传入的table的2个value,table.sort每次会返回两个value传入比较函数。上例是t中的value。

比较函数是这样的:

结果为:

自定义的比较函数功能十分强大,但是也有一些坑。

注意:

1.table.sort并不稳定,当条件的两个元素相等时,它们在排序后的相对位置可能会改变(据说,我自己暂未出现,可能用的少)

2.要求需要排序table中间元素不能有nil,否则会报错

3.当比较的两个元素相等的时候,比较函数一定要返回false,返回true会报错,table.sort会根据你返回的bool来判断两个value是否保持原来的顺序


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
8. Unity3d Lua框架 - xLua - Resource 资源管理系统:提供资源加载管理 ...发布时间:2022-07-22
下一篇:
开源lua调试器发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap